Django 前后台的数据传递的方法
Django从后台往前台传递数据时有多种方法可以实现。
最简单的后台是这样的:
fromdjango.shortcutsimportrender defmain_page(request): returnrender(request,'index.html')
这个就是返回index.html的内容,但是如果要带一些数据一起传给前台的话,该怎么办呢?
一view->HTML使用Django模版
这里是这样:后台传递一些数据给html,直接渲染在网页上,不会有什么复杂的数据处理(如果前台要处理数据,那么就传数据给JS处理)
Django代码:
fromdjango.shortcutsimportrender defmain_page(request): data=[1,2,3,4] returnrender(request,'index.html',{'data':data})
html使用{{}}来获取数据
{{data}}
可以对可迭代的数据进行迭代:
{%foritemindata%}{{item}}
{%endfor%}
该方法可以传递各种数据类型,包括list,dict等等。
而且除了{%for%}以外还可以进行if判断,大小比较等等。具体的用法读者可以自行搜索。
二view->JavaScript
如果数据不传给html用,要传给js用,那么按照上文的方式写会有错误。
需要注意两点:
1.views.py中返回的函数中的值要用json.dumps()处理
2.在网页上要加一个safe过滤器。
代码:
views.py
#-*-coding:utf-8-*- importjson fromdjango.shortcutsimportrender defmain_page(request): list=['view','Json','JS'] returnrender(request,'index.html',{ 'List':json.dumps(list), })
JavaScript部分:
varList={{List|safe}};
三JavaScriptAjax动态刷新页面
这个标题的意思是:网页前台使用Ajax发送请求,后台处理数据后返回数据给前台,前台不刷新网页动态加载数据
Django代码:
defscene_update_view(request): ifrequest.method=="POST": name=request.POST.get('name') status=0 result="Error!" returnHttpResponse(json.dumps({ "status":status, "result":result }))
JS代码:
functiongetSceneId(scece_name,td){ varpost_data={ "name":scece_name, }; $.ajax({ url:{%url'scene_update_url'%}, type:"POST", data:post_data, success:function(data){ data=JSON.parse(data); if(data["status"]==1){ setSceneTd(data["result"],scece_name,td); }else{ alert(data["result"]); } } }); }
JS发送ajax请求,后台处理请求并返回status,result
在success:后面定义回调函数处理返回的数据,需要使用JSON.parse(data)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。