所熟悉的Django前后台数据传递的方法有以下几种:
1、后台往前台传数据
最简单的返回一个页面,view代码如下:
def Home(request): return render(request,"flow/home.html",locals())
如果要带上一些数据返回到前台:
view代码:
def domain_list(request): data = [1,2,3,4,5,6] return render(request, 'domain/domain.html', locals())
domain.html接受数据
可以用{{data}}直接在页面显示数据
<div>{{ data }}</div>
也可以对数据进行迭代,比如把数据放到table中显示
{% for x in data %} <p>{{ x }}</p> {% end for %}
以上方法后台传过来的数据直接给了在HTML中显示出来,如果数据是传给js用的就用以下方法,注意后台穿过来的数据要处理成json格式:
view部分:
import json def domain_list(request): data = ['hello','world','!'] data = json.dumps(data) #data必须是一个list return render(request, 'domain/domain.html', locals())
HTML的js部分需要接一个safe过滤器:
<script> var List = {{ data|safe }}; </script>
2、前台往后台传数据:
前台往后台传数据方法就比较多了
(1)使用ajax动态刷新页面
HTML的js部分:
<div><button type="button" id="testBotton" οnclick="Ssss('{{ x }}')">测试</button></div>
<script language="JavaScript"> function Ssss(id) { var domain_name = id; //获取要传到后台的数据 $.ajax({ type: "GET", url: "test/", //后台处理函数的url data: domain_name, success: function (result) { //获取后台处理后传过来的result alert(result) }, }); } </script>
后台view部分:
def scene(request): if request.method == "GET": name = request.GET.get('domain_name') print name result = "OK!" return HttpResponse(result)
(2)可以将数据直接放到URL里
<script language="JavaScript"> function Ssss(id) { $.ajax({ type: "GET", url: "test/?domain_name="+id, //后台处理函数的url和数据 success: function (result) { //获取后台处理后传过来的result alert(result) }, }); } </script>