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 相关文章推荐
在Django中创建URLconf相关的通用视图的方法
Jul 20 Python
Django 登陆验证码和中间件的实现
Aug 17 Python
Python3.4学习笔记之常用操作符,条件分支和循环用法示例
Mar 01 Python
django 微信网页授权登陆的实现
Jul 30 Python
利用ImageAI库只需几行python代码实现目标检测
Aug 09 Python
django中瀑布流写法实例代码
Oct 14 Python
python读取与处理netcdf数据方式
Feb 14 Python
Python HTMLTestRunner可视化报告实现过程解析
Apr 10 Python
python 多线程共享全局变量的优劣
Sep 24 Python
Python实现FTP文件定时自动下载的步骤
Dec 19 Python
Python多个MP4合成视频的实现方法
Jul 16 Python
python_tkinter弹出对话框创建
Mar 20 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
ECMall支持SSL连接邮件服务器的配置方法详解
2014/05/19 PHP
分享PHP计算两个日期相差天数的代码
2015/12/23 PHP
Yii2中Restful API原理实例分析
2016/07/25 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
2017/06/07 PHP
Prototype Class对象学习
2009/07/19 Javascript
Jquery+WebService 校验账号是否已被注册的代码
2010/07/12 Javascript
基于jquery的设置页面文本框 只能输入数字的实现代码
2011/04/19 Javascript
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
2011/10/13 Javascript
jquery中ajax学习笔记3
2011/10/16 Javascript
Raphael带文本标签可拖动的图形实现代码
2013/02/20 Javascript
jQuery拖拽div实现思路
2014/02/19 Javascript
了不起的node.js读书笔记之例程分析
2014/12/22 Javascript
javascript+canvas制作九宫格小程序
2014/12/28 Javascript
JavaScript操作Cookie详解
2015/02/28 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
2015/08/25 Javascript
JS获取一个未知DIV高度的方法
2016/08/09 Javascript
老生常谈javascript变量的命名规范和注释
2016/09/29 Javascript
JavaScript 深层克隆对象详解及实例
2016/11/03 Javascript
原生JS实现不断变化的标签
2017/05/22 Javascript
使用Angular9和TypeScript开发RPG游戏的方法
2020/03/25 Javascript
Nodejs环境实现socket通信过程解析
2020/07/03 NodeJs
vue实现多个echarts根据屏幕大小变化而变化实例
2020/07/19 Javascript
[57:53]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#3OG VS VP
2016/03/03 DOTA
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
2016/11/16 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
Python+OpenCV图片局部区域像素值处理详解
2019/01/23 Python
python实时检测键盘输入函数的示例
2019/07/17 Python
python3 selenium自动化测试 强大的CSS定位方法
2019/08/23 Python
利用matplotlib为图片上添加触发事件进行交互
2020/04/23 Python
python爬虫---requests库的用法详解
2020/09/28 Python
澳大利亚宠物商店:Petbarn
2017/11/18 全球购物
高山背包:High Sierra
2017/11/23 全球购物
SOKOLOV官网:俄罗斯珠宝首饰品牌
2021/01/02 全球购物
幼儿园教师考核评语
2014/12/31 职场文书
压缩Redis里的字符串大对象操作
2021/06/23 Redis