一、后端向前端传JSON数据
python的json.dumps方法+js的JSON.parse方法
首先后端views.py中:
def login(request):
Users = models.User.objects.all()
username = []
for i in Users:
username.append(i.username)
return render(request, "login.html",{'username': json.dumps(username)})
其中 username是我User表中的一个字段,json.dumps()是python中json库的一个函数,将python对象编码成json字符串。python的json库还有一个函数是json.loads(),将已编码的json字符串解码为python对象,在下面也会介绍。
好了,通过render我们将json格式的username传到了前端
前端html中:
var usernames = "{{ username }}";
var usernames_r = usernames.replace(/\"/g, '\"');
var usernames_r_p = JSON.parse(usernames_r);
js中对json的处理也有两个函数。JSON.parse() 方法用于将一个 JSON 字符串转换为对象。另一个方法JSON.stringify() 用于将 JavaScript 值转换为 JSON 字符串。
最终前端得到的usernames_r_p是个列表(原谅我取的变量名),然后前端js就能使用列表中的数据啦!我们可以alert一下,看看usernames_r_p输出的是什么。
json可以转化的类型很多,这边只举了个list的例子,其他类型的还有(自己尝试):
二、前端向后端传数据
js的JSON.stringify()方法+python的json.loads()方法,上面也介绍过了,这边只放个object的例子。
前端html中:
<script>
function sub()
{
var a = document.getElementById("aa").value;
var b = document.getElementById("bb").value;
var str = {"a": a, "b": b};
var str_json = JSON.stringify(str);
document.getElementById("cc").value = str_json;
return true;
}
</script>
<input type="text" id="aa"/>
<input type="text" id="bb"/>
<form method="POST" onsubmit="return sub()">
{% csrf_token %}
<input type="hidden" name="data" id="cc"/>
<input type="submit" value="提交"/>
</form>
后端views.py中:
def login(request):
if request.method == 'POST':
print(request.POST['data'])
result = json.loads(request.POST['data'])
print(result['a'])
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其实我是一个程序员