Django 前后台的数据传递的方法


Posted in Python onAugust 08, 2017

Django 从后台往前台传递数据时有多种方法可以实现。

最简单的后台是这样的:

from django.shortcuts import render

def main_page(request):
  return render(request, 'index.html')

这个就是返回index.html的内容,但是如果要带一些数据一起传给前台的话,该怎么办呢?

一 view -> HTML 使用Django模版

这里是这样:后台传递一些数据给html,直接渲染在网页上,不会有什么复杂的数据处理(如果前台要处理数据,那么就传数据给JS处理)

Django 代码:

from django.shortcuts import render

def main_page(request):
  data = [1,2,3,4]
  return render(request, 'index.html', {'data': data})

html使用 {{ }} 来获取数据

<div>{{ data }}</div>

可以对可迭代的数据进行迭代:

{% for item in data%}
<p>{{ item }}</p>
{% endfor %}

该方法可以传递各种数据类型,包括list,dict等等。

而且除了 {% for %} 以外还可以进行if判断,大小比较等等。具体的用法读者可以自行搜索。

二 view-> JavaScript

如果数据不传给html用,要传给js用,那么按照上文的方式写会有错误。

需要注意两点:

1.views.py中返回的函数中的值要用 json.dumps() 处理

2.在网页上要加一个 safe 过滤器。

代码:

views.py

# -*- coding: utf-8 -*-
 
import json
from django.shortcuts import render
 
def main_page(request):
  list = ['view', 'Json', 'JS']
  return render(request, 'index.html', {
      'List': json.dumps(list),
    })

JavaScript部分:

var List = {{ List|safe }};

三 JavaScript Ajax 动态刷新页面

这个标题的意思是:网页前台使用Ajax发送请求,后台处理数据后返回数据给前台,前台不刷新网页动态加载数据

Django 代码:

def scene_update_view(request):
  if request.method == "POST":
      name = request.POST.get('name')
      status = 0
      result = "Error!"
      return HttpResponse(json.dumps({
        "status": status,
        "result": result
      }))

JS 代码:

function getSceneId(scece_name, td) {
      var post_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)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python多线程编程简单介绍
Apr 13 Python
Python检测网站链接是否已存在
Apr 07 Python
python学习 流程控制语句详解
Jun 01 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
Aug 18 Python
Pyqt实现无边框窗口拖动以及窗口大小改变
Apr 19 Python
python实现彩票系统
Jun 28 Python
python实现遍历文件夹修改文件后缀
Aug 28 Python
python文件拆分与重组实例
Dec 10 Python
python将一个英文语句以单词为单位逆序排放的方法
Dec 20 Python
Python数据可视化常用4大绘图库原理详解
Oct 23 Python
Python环境搭建过程从安装到Hello World
Feb 05 Python
如何用python绘制雷达图
Apr 24 Python
关于python pyqt5安装失败问题的解决方法
Aug 08 #Python
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
Aug 08 #Python
利用python打印出菱形、三角形以及矩形的方法实例
Aug 08 #Python
Python正则表达式非贪婪、多行匹配功能示例
Aug 08 #Python
关于Python 3中print函数的换行详解
Aug 08 #Python
Python tkinter模块中类继承的三种方式分析
Aug 08 #Python
Python实现注册登录系统
Aug 08 #Python
You might like
PHP JS Ip地址及域名格式检测代码
2013/09/27 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
2019/10/16 PHP
两种WEB下的模态对话框 (asp.net或js的分别实现)
2009/12/02 Javascript
jquery重新播放css动画所遇问题解决
2013/08/21 Javascript
jquery $.each()使用探讨
2013/09/23 Javascript
js获取IP地址的方法小结
2014/07/01 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
js仿3366小游戏选字游戏
2016/04/14 Javascript
微信公众号 摇一摇周边功能开发
2016/12/08 Javascript
jQuery插件ajaxFileUpload使用详解
2017/01/10 Javascript
Bootstrap下拉菜单样式
2017/02/07 Javascript
写给小白看的JavaScript异步
2017/11/29 Javascript
JavaScript设计模式之缓存代理模式原理与简单用法示例
2018/08/07 Javascript
nodejs实现百度舆情接口应用示例
2020/02/07 NodeJs
Javascript幻灯片播放功能实现过程解析
2020/05/07 Javascript
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
python进阶_浅谈面向对象进阶
2017/08/17 Python
老生常谈Python startswith()函数与endswith函数
2017/09/08 Python
Pyqt QImage 与 np array 转换方法
2019/06/27 Python
详解用python计算阶乘的几种方法
2019/08/14 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
2020/01/14 Python
浅析HTML5 meta viewport参数
2020/10/28 HTML / CSS
美国最大的城市服装和运动鞋零售商:Jimmy Jazz
2016/11/19 全球购物
Sony C++笔试题
2013/03/10 面试题
英文求职信范文
2014/05/23 职场文书
体育教育毕业生自荐信
2014/06/29 职场文书
领导干部对照检查材料
2014/08/24 职场文书
群众路线自我剖析及整改措施
2014/11/04 职场文书
2014年安全管理工作总结
2014/12/01 职场文书
幼儿园园长新年寄语2015
2014/12/08 职场文书
安徽导游词
2015/02/12 职场文书
元宵节寄语大全
2015/02/27 职场文书
2016高考寄语或鼓励的话语
2015/12/04 职场文书
PyQt5实现多张图片显示并滚动
2021/06/11 Python
JavaScript实现登录窗体
2021/06/22 Javascript