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 REST framework视图的用法
Jan 16 Python
python多线程并发让两个LED同时亮的方法
Feb 18 Python
python sort、sort_index方法代码实例
Mar 28 Python
pytorch模型预测结果与ndarray互转方式
Jan 15 Python
Python任务自动化工具tox使用教程
Mar 17 Python
jupyter notebook oepncv 显示一张图像的实现
Apr 24 Python
Python+Kepler.gl实现时间轮播地图过程解析
Jul 20 Python
python如何变换环境
Jul 21 Python
Python 列表反转显示的四种方法
Nov 16 Python
python 基于pygame实现俄罗斯方块
Mar 02 Python
基于Python的EasyGUI学习实践
May 07 Python
Matplotlib绘制条形图的方法你知道吗
Mar 21 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
最贵的咖啡是怎么产生的,它的风味怎么样?
2021/03/04 新手入门
关于访问控制的一首PHP面试题(对属性或方法的访问控制)
2012/09/13 PHP
使用php显示搜索引擎来的关键词
2014/02/13 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
2014/04/02 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
在JavaScript中通过URL传递汉字的方法
2007/04/09 Javascript
JavaScript isPrototypeOf和hasOwnProperty使用区别
2010/03/04 Javascript
js Object2String方便查看js对象内容
2014/11/24 Javascript
TinyMCE提交AjaxForm获取不到数据的解决方法
2015/03/05 Javascript
JavaScript将数组转换成CSV格式的方法
2015/03/19 Javascript
jQuery拖拽插件gridster使用指南
2015/04/21 Javascript
基于WebUploader的文件上传js插件
2016/08/19 Javascript
angular 用Observable实现异步调用的方法
2018/12/27 Javascript
webpack自动打包和热更新的实现方法
2019/06/24 Javascript
浅谈监听单选框radio改变事件(和layui中单选按钮改变事件)
2019/09/10 Javascript
JavaScript canvas仿代码流瀑布
2020/02/10 Javascript
Python代码调试的几种方法总结
2015/04/15 Python
浅谈Python的文件类型
2016/05/30 Python
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
Python即时网络爬虫项目启动说明详解
2018/02/23 Python
python 获取文件下所有文件或目录os.walk()的实例
2018/04/23 Python
Python实现简单的文本相似度分析操作详解
2018/06/16 Python
python爬虫爬取微博评论案例详解
2019/03/27 Python
Python格式化输出--%s,%d,%f的代码解析
2020/04/29 Python
如何通过命令行进入python
2020/07/06 Python
Python爬虫基于lxml解决数据编码乱码问题
2020/07/31 Python
利用CSS3实现进度条的两种姿势详解
2017/03/21 HTML / CSS
纯css实现照片墙3D效果的示例代码
2017/11/13 HTML / CSS
简洁自适应404页面HTML好看的404源码
2020/12/16 HTML / CSS
阿迪达斯丹麦官网:adidas丹麦
2016/10/01 全球购物
Myholidays美国:在线旅游网站
2019/08/16 全球购物
幼儿园安全责任书范本
2014/07/24 职场文书
党的群众路线教育实践活动个人整改措施范文
2014/11/04 职场文书
Python进度条的使用
2021/05/17 Python
前端监听websocket消息并实时弹出(实例代码)
2021/11/27 Javascript
Springboot/Springcloud项目集成redis进行存取的过程解析
2021/12/04 Redis