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中实现远程调用(RPC、RMI)简单例子
Apr 28 Python
python中的五种异常处理机制介绍
Sep 02 Python
浅谈python字典多键值及重复键值的使用
Nov 04 Python
python字符串的方法与操作大全
Jan 30 Python
Python读取csv文件分隔符设置方法
Jan 14 Python
Python 保存矩阵为Excel的实现方法
Jan 28 Python
Django文件存储 自己定制存储系统解析
Aug 02 Python
Python开发企业微信机器人每天定时发消息实例
Mar 17 Python
Python虚拟环境的创建和包下载过程分析
Jun 19 Python
python实现逻辑回归的示例
Oct 09 Python
Python基于staticmethod装饰器标示静态方法
Oct 17 Python
python 实现一个图形界面的汇率计算器
Nov 09 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 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
2010/08/01 PHP
php设计模式 Composite (组合模式)
2011/06/26 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
2014/09/29 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
php7安装yar扩展的方法详解
2017/08/03 PHP
PHP快速导出百万级数据到CSV或者EXCEL文件
2020/11/27 PHP
Javascript 验证上传图片大小[客户端]
2009/08/01 Javascript
Jquery CheckBox全选方法代码附js checkbox全选反选代码
2010/06/09 Javascript
location.href 在IE6中不跳转的解决方法与推荐使用代码
2010/07/08 Javascript
DWZ刷新dialog解决方法
2013/03/03 Javascript
判断一个对象是否为jquery对象的方法
2014/03/12 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
2014/06/05 Javascript
使用JSON.parse将json字符串转换成json对象的时候会出错
2014/09/04 Javascript
JavaScript中的类数组对象介绍
2014/12/30 Javascript
javascript实现简单的省市区三级联动
2015/05/14 Javascript
jQuery获取父元素及父节点的方法小结
2016/04/14 Javascript
动态加载js文件简单示例
2016/04/21 Javascript
easyui导出excel无法弹出下载框的快速解决方法
2016/11/10 Javascript
jquery事件与绑定事件
2017/03/16 Javascript
jQuery实现键盘回车搜索功能
2017/07/25 jQuery
react native实现往服务器上传网络图片的实例
2017/08/07 Javascript
浅谈js中的this问题
2017/08/31 Javascript
Express进阶之log4js实用入门指南
2018/02/10 Javascript
手写Vue弹窗Modal的实现代码
2019/09/11 Javascript
[50:04]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第二局
2016/02/28 DOTA
Python实现Linux下守护进程的编写方法
2014/08/22 Python
tensorflow识别自己手写数字
2018/03/14 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
Python3.0中普通方法、类方法和静态方法的比较
2019/05/03 Python
python 3.6.7实现端口扫描器
2019/09/04 Python
使用pytorch 筛选出一定范围的值
2020/06/28 Python
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
2018/10/08 HTML / CSS
村委会换届选举方案
2014/05/03 职场文书
家具公司总经理岗位职责
2014/07/08 职场文书
药房管理制度范本
2015/08/06 职场文书
Redis中有序集合的内部实现方式的详细介绍
2022/03/16 Redis