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 (2)
Oct 31 Python
python实现逆波兰计算表达式实例详解
May 06 Python
深入理解python中的浅拷贝和深拷贝
May 30 Python
Python三级目录展示的实现方法
Sep 28 Python
使用PyV8在Python爬虫中执行js代码
Feb 16 Python
Python在图片中添加文字的两种方法
Apr 29 Python
python验证码识别的示例代码
Sep 21 Python
Django实现简单分页功能的方法详解
Dec 05 Python
Linux CentOS7下安装python3 的方法
Jan 21 Python
Python生成器定义与简单用法实例分析
Apr 30 Python
Python Selenium 之数据驱动测试的实现
Aug 01 Python
使用OpenCV circle函数图像上画圆的示例代码
Dec 27 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者的疑难问答(1)
2006/10/09 PHP
PHP 和 MySQL 开发的 8 个技巧
2007/01/02 PHP
菜鸟学PHP之Smarty入门
2007/01/04 PHP
在PHP中使用Sockets 从Usenet中获取文件
2008/01/10 PHP
php中error与exception的区别及应用
2014/07/28 PHP
完美实现wordpress禁止文章修订和自动保存的方法
2014/11/03 PHP
PHP输出两个数字中间有多少个回文数的方法
2015/03/23 PHP
php判断对象是派生自哪个类的方法
2015/06/20 PHP
JavaScript入门教程(8) Location地址对象
2009/01/31 Javascript
Eval and new funciton not the same thing
2012/12/27 Javascript
jQuery实现列表自动循环滚动鼠标悬停时停止滚动
2013/09/06 Javascript
vue分页组件table-pagebar使用实例解析
2020/11/15 Javascript
微信小程序 location API接口详解及实例代码
2016/10/12 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
基于JavaScript实现焦点图轮播效果
2017/03/27 Javascript
实例详解display:none与visible:hidden的区别
2017/03/30 Javascript
详解VUE 定义全局变量的几种实现方式
2017/06/01 Javascript
vue-cli项目中怎么使用mock数据
2017/09/27 Javascript
详解vue mint-ui源码解析之loadmore组件
2017/10/11 Javascript
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
2018/10/09 Javascript
js设计模式之代理模式及订阅发布模式实例详解
2019/08/15 Javascript
详解Vue.js3.0 组件是如何渲染为DOM的
2020/11/10 Javascript
[00:33]2018DOTA2亚洲邀请赛TNC出场
2018/04/04 DOTA
python实现探测socket和web服务示例
2014/03/28 Python
使用Python编写一个简单的tic-tac-toe游戏的教程
2015/04/16 Python
Python中asyncore异步模块的用法及实现httpclient的实例
2016/06/28 Python
Django中更改默认数据库为mysql的方法示例
2018/12/05 Python
使用CodeMirror实现Python3在线编辑器的示例代码
2019/01/14 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
pytorch 自定义数据集加载方法
2019/08/18 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
2021/01/15 Python
洲际酒店集团大中华区:IHG中国
2016/08/17 全球购物
中秋节国旗下演讲稿
2014/09/05 职场文书
读后感作文评语
2014/12/25 职场文书
Mysql中一千万条数据怎么快速查询
2021/12/06 MySQL