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 相关文章推荐
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
May 03 Python
解决python3在anaconda下安装caffe失败的问题
Jun 15 Python
Python基于pygame模块播放MP3的方法示例
Sep 30 Python
Python中pillow知识点学习
Apr 30 Python
python字符串循环左移
Mar 08 Python
浅谈Python反射 &amp; 单例模式
Mar 21 Python
使用Python做垃圾分类的原理及实例代码附源码
Jul 02 Python
Python实现滑动平均(Moving Average)的例子
Aug 24 Python
Python 求数组局部最大值的实例
Nov 26 Python
python实现对变位词的判断方法
Apr 05 Python
Python如何使用27行代码绘制星星图
Jul 20 Python
Python绘制组合图的示例
Sep 18 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
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
Yii2中使用asset压缩js,css文件的方法
2016/11/24 PHP
javascript中encodeURI和decodeURI方法使用介绍
2013/05/06 Javascript
弹出最简单的模式化遮罩层的js代码
2013/12/04 Javascript
jquery实现手机发送验证码的倒计时代码
2014/02/12 Javascript
javascript 动态创建表格的2种方法总结
2015/03/04 Javascript
jquery实现的仿天猫侧导航tab切换效果
2015/08/24 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
js实现适配不同的屏幕大小
2017/04/10 Javascript
详解angular用$sce服务来过滤HTML标签
2017/04/11 Javascript
React学习之事件绑定的几种方法对比
2017/09/24 Javascript
jQuery实现的简单图片轮播效果完整示例
2018/02/08 jQuery
Angular CLI在Angular项目中如何使用scss详解
2018/04/10 Javascript
微信小程序module.exports模块化操作实例浅析
2018/12/20 Javascript
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
2019/05/10 Javascript
原生js实现针对Dom节点的CRUD操作示例
2019/08/26 Javascript
[00:52]DOTA2国际邀请赛
2020/02/21 DOTA
Python操作串口的方法
2015/06/17 Python
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
django开发之settings.py中变量的全局引用详解
2017/03/29 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
Python实现PS滤镜特效之扇形变换效果示例
2018/01/26 Python
Python爬取个人微信朋友信息操作示例
2018/08/03 Python
python numpy 按行归一化的实例
2019/01/21 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
2019/07/10 Python
Django数据库操作之save与update的使用
2020/04/01 Python
利用 CSS3 实现的无缝轮播功能代码
2017/09/25 HTML / CSS
HTML5 canvas画图并保存成图片的jcanvas插件
2014/01/17 HTML / CSS
L*SPACE官网:比基尼、泳装和度假服装
2019/03/18 全球购物
StubHub澳大利亚:购买或出售您的门票
2019/08/01 全球购物
工地门卫岗位职责
2013/12/30 职场文书
世界读书日的活动方案
2014/08/20 职场文书
学校中秋节活动总结
2015/03/23 职场文书
python中的被动信息搜集
2021/04/29 Python
自从在 IDEA 中用了热部署神器 JRebel 之后,开发效率提升了 10(真棒)
2021/06/26 Java/Android
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python