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 相关文章推荐
Selenium chrome配置代理Python版的方法
Nov 29 Python
对python实现二维函数高次拟合的示例详解
Dec 29 Python
Python子类继承父类构造函数详解
Feb 19 Python
使用Python实现企业微信的自动打卡功能
Apr 30 Python
Python + selenium + crontab实现每日定时自动打卡功能
Mar 31 Python
Django 解决distinct无法去除重复数据的问题
May 20 Python
解决pytorch多GPU训练保存的模型,在单GPU环境下加载出错问题
Jun 23 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
Jul 14 Python
利用Python实现斐波那契数列的方法实例
Jul 26 Python
pycharm导入源码的具体步骤
Aug 04 Python
分享3个非常实用的 Python 模块
Mar 03 Python
Python 操作pdf pdfplumber读取PDF写入Exce
Aug 14 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 获取SWF动画截图示例代码
2014/02/10 PHP
PHP7如何开启Opcode打造强悍性能详解
2018/05/11 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
2019/05/30 PHP
HTML长文本截取含有HTML代码同样适用的两种方法
2013/07/31 Javascript
js简单的点击返回顶部效果实现方法
2015/04/10 Javascript
简介JavaScript中toUpperCase()方法的使用
2015/06/06 Javascript
javascript动态添加checkbox复选框的方法
2015/12/23 Javascript
jQuery获取file控件中图片的宽高与大小
2016/08/04 Javascript
微信小程序-消息提示框实例
2016/11/24 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
2016/12/07 Javascript
jQuery实现简单弹窗遮罩效果
2017/02/27 Javascript
JavaScript正则获取地址栏中参数的方法
2017/03/02 Javascript
Vue组件tree实现树形菜单
2017/04/13 Javascript
JavaScript对JSON数据进行排序和搜索
2017/07/24 Javascript
使用vue + less 实现简单换肤功能的示例
2018/02/21 Javascript
JS动画定时器知识总结
2018/03/23 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
2018/07/19 Javascript
mpvue网易云短信接口实现小程序短信登录的示例代码
2020/04/03 Javascript
vue element ui validate 主动触发错误提示操作
2020/09/21 Javascript
基于JQuery和DWR实现异步数据传递
2020/10/16 jQuery
Python实现自动上京东抢手机
2018/02/06 Python
python进行两个表格对比的方法
2018/06/27 Python
python scrapy重复执行实现代码详解
2019/12/28 Python
python中安装django模块的方法
2020/03/12 Python
解决django接口无法通过ip进行访问的问题
2020/03/27 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
2020/08/07 Python
使用CSS3制作版头动画效果
2020/12/24 HTML / CSS
创建省级文明单位实施方案
2014/02/27 职场文书
投资合作协议书范本
2014/04/17 职场文书
希特勒经典演讲稿
2014/05/19 职场文书
投资意向书
2014/07/30 职场文书
机关职员工作检讨书
2014/10/23 职场文书
岗位竞聘报告范文
2014/11/06 职场文书
暑假生活随笔
2015/08/15 职场文书
2016年读书月活动总结范文
2016/04/06 职场文书
django如何自定义manage.py管理命令
2021/04/27 Python