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 相关文章推荐
打开电脑上的QQ的python代码
Feb 10 Python
浅谈Python中函数的参数传递
Jun 21 Python
利用Python代码实现数据可视化的5种方法详解
Mar 25 Python
python批量修改文件编码格式的方法
May 31 Python
BP神经网络原理及Python实现代码
Dec 18 Python
浅谈python函数调用返回两个或多个变量的方法
Jan 23 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
Apr 15 Python
Python 3.6 -win64环境安装PIL模块的教程
Jun 20 Python
python使用tomorrow实现多线程的例子
Jul 20 Python
Python 实现一个手机号码获取妹子名字的功能
Sep 25 Python
python实现提取str字符串/json中多级目录下的某个值
Feb 27 Python
Python爬虫UA伪装爬取的实例讲解
Feb 19 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
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
php如何利用pecl安装mongodb扩展详解
2019/01/09 PHP
javascript实现日期格式转换
2014/12/16 Javascript
javascript跨域总结之window.name实现的跨域数据传输
2015/11/01 Javascript
JS与jQuery遍历Table所有单元格内容的方法
2015/12/07 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
Bootstrap轮播图的使用和理解4
2016/12/14 Javascript
Webpack+Vue如何导入Jquery和Jquery的第三方插件
2017/02/20 Javascript
jQuery EasyUI Panel面板组件使用详解
2017/02/28 Javascript
JavaScript无操作后屏保功能的实现方法
2017/07/04 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
2017/09/20 Javascript
jQuery实现侧边栏隐藏与显示的方法详解
2018/12/22 jQuery
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
JS操作json对象key、value的常用方法分析
2019/10/29 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
python 数据加密代码
2008/12/24 Python
python元组操作实例解析
2014/09/23 Python
Python中使用Boolean操作符做真值测试实例
2015/01/30 Python
Python实现windows下模拟按键和鼠标点击的方法
2015/03/13 Python
Python栈类实例分析
2015/06/15 Python
Python 实现选择排序的算法步骤
2018/04/22 Python
Sanic框架请求与响应实例分析
2018/07/16 Python
详解基于django实现的webssh简单例子
2018/07/17 Python
python中实现控制小数点位数的方法
2019/01/24 Python
完美解决pycharm 不显示代码提示问题
2020/06/02 Python
Python3创建Django项目的几种方法(3种)
2020/06/03 Python
Python‘==‘ 及 ‘is‘相关原理解析
2020/09/05 Python
Burberry英国官网:英国标志性奢侈品牌
2017/03/29 全球购物
Asics日本官网:鬼冢八喜郎创立的跑鞋运动品牌
2017/10/18 全球购物
弘扬民族精神演讲稿
2014/05/07 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书
党员干部公开承诺书范文
2015/04/27 职场文书
学校2016年九九重阳节活动总结
2016/04/01 职场文书
企业内部管理控制:采购授权审批制度范本
2020/01/19 职场文书
解读MySQL的客户端和服务端协议
2021/05/10 MySQL
Win11任务栏无法正常显示 资源管理器不停重启的解决方法
2022/07/07 数码科技