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获得时间的实例说明
Mar 25 Python
Python中还原JavaScript的escape函数编码后字符串的方法
Aug 22 Python
Python进程间通信用法实例
Jun 04 Python
Django框架中数据的连锁查询和限制返回数据的方法
Jul 17 Python
通过Python来使用七牛云存储的方法详解
Aug 07 Python
使用pandas批量处理矢量化字符串的实例讲解
Jul 10 Python
python游戏地图最短路径求解
Jan 16 Python
django的ORM模型的实现原理
Mar 04 Python
python爬虫 基于requests模块的get请求实现详解
Aug 20 Python
python 将列表里的字典元素合并为一个字典实例
Sep 01 Python
Matplotlib配色之Colormap详解
Jan 05 Python
分享python函数常见关键字
Apr 26 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自动加载的两种实现方法
2010/06/21 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
2014/06/25 PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
2017/02/17 PHP
PHP微信H5支付开发实例
2018/07/25 PHP
PHP 7.4 新语法之箭头函数实例详解
2019/05/09 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
2019/06/14 PHP
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
2007/04/29 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
2012/12/25 Javascript
IE的fireEvent方法概述及应用
2013/02/22 Javascript
深入浅析JavaScript中的constructor
2016/04/19 Javascript
JS中跨页面调用变量和函数的方法(例如a.js 和 b.js中互相调用)
2016/11/01 Javascript
bootstrap栅格系统示例代码分享
2017/05/22 Javascript
Javascript实现基本运算器
2017/07/15 Javascript
轻松理解vue的双向数据绑定问题
2017/10/30 Javascript
AngularJS实现controller控制器间共享数据的方法示例
2017/10/30 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
js 执行上下文和作用域的相关总结
2021/02/08 Javascript
[42:27]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第三局
2016/03/05 DOTA
python中正则的使用指南
2016/12/04 Python
解决Python3中的中文字符编码的问题
2018/07/18 Python
Python类装饰器实现方法详解
2018/12/21 Python
python每天定时运行某程序代码
2019/08/16 Python
简单了解pytest测试框架setup和tearDown
2020/04/14 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
2020/05/15 Python
PyCharm中如何直接使用Anaconda已安装的库
2020/05/28 Python
python 绘制场景热力图的示例
2020/09/23 Python
英国最大的电子零件及配件零售商:Partmaster
2017/04/24 全球购物
印度尼西亚最好的小工具在线商店:Erafone.com
2019/03/26 全球购物
现代绅士日常奢侈品:Todd Snyder
2019/12/13 全球购物
大学生职业生涯规划书汇总
2014/03/20 职场文书
母亲节感言
2015/08/03 职场文书
小学四年级作文之人物作文
2019/11/06 职场文书
position:sticky 粘性定位的几种巧妙应用详解
2021/04/24 HTML / CSS
python 解决微分方程的操作(数值解法)
2021/05/26 Python
剧场版《转生恶役只好拔除破灭旗标》公开最新视觉图 2023年上映
2022/04/02 日漫