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 相关文章推荐
Pyramid Mako模板引入helper对象的步骤方法
Nov 27 Python
python2.6.6如何升级到python2.7.14
Apr 08 Python
对python 中class与变量的使用方法详解
Jun 26 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
Jul 16 Python
django-初始配置(纯手写)详解
Jul 30 Python
在Python中获取操作系统的进程信息
Aug 27 Python
关于Python内存分配时的小秘密分享
Sep 05 Python
Python环境下安装PyGame和PyOpenGL的方法
Mar 25 Python
Django修改app名称和数据表迁移方案实现
Sep 17 Python
Python中qutip用法示例详解
Oct 02 Python
Python绘制地图神器folium的新人入门指南
May 23 Python
python 爬取华为应用市场评论
May 29 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
smarty内置函数section的用法
2015/01/22 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
2019/10/16 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
2020/01/23 PHP
tp5.1 框架join方法用法实例分析
2020/05/26 PHP
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
2014/08/15 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
javascript每日必学之封装
2016/02/23 Javascript
JS onkeypress兼容性写法详解
2016/04/27 Javascript
jQuery事件用法详解
2016/10/06 Javascript
echart简介_动力节点Java学院整理
2017/08/11 Javascript
解决easyui日期时间框ie的兼容的问题
2018/03/01 Javascript
JS div匀速移动动画与变速移动动画代码实例
2019/03/26 Javascript
vue 中 beforeRouteEnter 死循环的问题
2019/04/23 Javascript
elementUI select组件使用及注意事项详解
2019/05/29 Javascript
vue 实现强制类型转换 数字类型转为字符串
2019/11/07 Javascript
javascript 数组(list)添加/删除的实现
2020/12/17 Javascript
用python 制作图片转pdf工具
2015/01/30 Python
Python操作列表之List.insert()方法的使用
2015/05/20 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
pytorch 获取tensor维度信息示例
2020/01/03 Python
Python装饰器原理与基本用法分析
2020/01/07 Python
django 利用Q对象与F对象进行查询的实现
2020/05/15 Python
HTML5实现可缩放时钟代码
2017/08/28 HTML / CSS
Aveda美国官网:天然护发产品、洗发水、护发素和沙龙
2016/12/09 全球购物
PAUL HEWITT手表美国站:德国北部时尚生活配饰品牌,船锚元素
2017/11/18 全球购物
英国家电购物网站:Sonic Direct
2019/03/26 全球购物
Europcar意大利:汽车租赁
2019/07/07 全球购物
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
中软Java笔试题
2012/11/11 面试题
代理商会议邀请函
2014/01/27 职场文书
银行服务感言
2014/03/01 职场文书
感谢信怎么写
2015/01/21 职场文书
文艺晚会开场白
2015/05/29 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书
Java spring定时任务详解
2021/10/05 Java/Android