用python前端html后端django_浅谈Django前端后端值传递问题
前端后端传值问题总结
前端传给后端
通过表单传值
1、通过表单get请求传值
在前端当通过get的方式传值时,表单中的标签的name值将会被当做action的地址的参数
此时,在后端可以通过get请求相应的name值拿到对应的value值
例子:
html中:
{% csrf_token %}
类别
{% for art in art_list %}
{{ art }}
{% endfor %}
视图中:
def select_art(request,id):
if request.method == 'GET':
que = request.GET.get('que')
request.session['que'] = que
拿到的值可以存入session中,在前端可以通过{{ request.session[que] }}拿到对应的值
最后一页
2、表单通过post请求传值
当前端通过post传值时,在视图中可以通过POST请求拿到对应的表单中的name属性对应的value值
通过ajax传值
POST -----------------------------------
通过ajax的post请求可以将html页面的值传到对应的视图函数中,在后端可以通过request.POST.get(键)获得前端通过ajax的data中的值,request.POST获取ajax传递的所有数据
注意:如果前端的dataType是json格式,后端的返回数据应该也是json格式,否则会请求不成功(但是可以接收前端ajax传输过来的值)。
将后端数据变为jsoon格式如下:
resp = '请求成功re'
return HttpResponse(json.dumps(resp))
或者
return JsonResponse(data)
例子~有些地方写多余了:
html页面:
$(function(){
$('#t1 a,#tz a').on('click',function(){
id = $(this).attr('class')
ta = $(this).text()
t = $(this)
$.ajax({
url:'/backweb/index/',
dataType:'json',
type:'POST',
data:{
ta: ta,
id:id
},
success:function(data){
if (ta == '推荐'){
t.text('不推荐')
}else if (ta == '不推荐'){
t.text('推荐')
}else if(ta == '展示'){
t.text('不展示')
}else if (ta == '不展示'){
t.text('展示')
}
},
error:function(){
alert('请求失败')
}
})
})
})
注意:
jqery中
如果事件绑定了多个标签,想要知道点击的标签可以使用$(this)获得。
通过标签对象.text()可以获得标签中的值。
通过标签对象.val()可以获得标签的value值(例如在表单中的值)
通过标签对象.attr(标签属性名)可以获得标签属性对应的值
以上的方法都可以给参,如果有参就代表修改属性值。
可以在标签中定义一个属性动态生成值
此时可以在绑定的时间函数中传入一个同样的参数,就可以在js中获取当前的被点击的标签
+
function addToCart(good_id){
$('#num_'+ good_id).html(data.data.c_num)
}
ajax中不能通过$(this)获得当前触发的标签,但是可以在ajax之外将对象获取,在ajax中的函数中使用。
GET-----------------------------
语法:$(selector).get(url,data,success(response,status,xhr),dataType)
这是一个简写的GET请求功能
参数:
url:必选规定将请求发送到哪个URL
data:可选。规定联通请求发送到服务器的数据
success(response,status,xhr):可选。当请求成功时执行的函数。
额外参数:
response - 包含后台传送回来的数据
status - 包含请求的状态
xhr - 包含XMLHttpRequest对象
dataType:可选。规定预计的服务器相应的数据类型。默认的,jQuery将只能判断。
可能的类型:
xml html text script json jsonp
等价于
$.ajax({
url: url,
data: data,
success: success,
dataType: dataType
});
实例:
1、请求test.php网页,传送两个参数
$.get("test.php", { name: "John", time: "2pm" } );
2、显示 test.php 返回值(HTML 或 XML,取决于返回值):
$.get("test.php", function(data){
alert("Data Loaded: " + data);
});
3、显示 test.cgi 返回值(HTML 或 XML,取决于返回值),添加一组请求参数:
$.get("test.cgi", { name: "John", time: "2pm" },
function(data){
alert("Data Loaded: " + data);
});
后端传给前端
当我们需要给前台中传递数据时,可以使用以下的方法:
1、传递数据和html渲染,不进行复杂的数据处理
使用render()将数据传给对应的html页面,字典的值可以是数字、字符串、列表、字典、object、Queryset等
return render(request, 'backweb/article_detail.html',{'types': typess})
在html中使用{{ 键 }}来获取数据 --- {{ types }}
可以可迭代的数据进行迭代
{% for type in types %}
type
{% endfor %}
也可以进行{% if %} {% else %}操作,注意格式:必须有结尾{% endif %}
2、传递数据给js使用 --- 例如ajax请求
此时views视图中的函数中的值要用json.dumps()处理成json格式
import json
from django.shortcuts import render
def main_page(request):
list = ['view', 'Json', 'JS']
return render(request, 'index.html', {
'List': json.dumps(list),
})
在前js中使用时需要加safe过滤器 --- var List = {{ List|safe }};
ajax异步刷新例子:
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"]);
}
}
});
}
success:function(data,status,xhr){} --- data:请求成功时调用的函数 status:描述状态的字符串 xhr:jqXHR
模板中:
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 发送ajax请求,后台处理请求并返回status, result --- ajax的数据类型为定义为json,所以返回的数据也得是json,不然请求失败(请求失败不代表数据传不到后台,只是后台的数据会返回失败)
在 success: 后面定义回调函数处理返回的数据,需要使用 JSON.parse(data)
以上这篇浅谈Django前端后端值传递问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
本文标题: 浅谈Django前端后端值传递问题
本文地址: http://www.cppcns.com/jiaoben/python/325309.html
用python前端html后端django_浅谈Django前端后端值传递问题相关推荐
- 浅谈Django的中间件与Python的装饰器
浅谈Django的中间件 与Python的装饰器 一.原理 1.装饰器是Python的一种语法应用,利用闭包的原理去更改一个函数的功能,即让一个函数执行之前先到另外一个函数中执行其他需求语句,在执行该 ...
- android应用前端,Android应用开发之浅谈移动前端适配
本文将带你了解Android应用开发之浅谈移动前端适配,希望本文对大家学Android有所帮助 1. 什么是前端适配 从UI展现层面上: 我们期望不同尺寸的设备,页面可以自适应的展示或者进行等比缩放, ...
- 【浅谈】前端禁止浏览器记住密码
[浅谈]前端禁止浏览器记住密码 浏览器记住是基于type='password',将password改为text,采用文本输入 将v-model的绑定方式改为这种输入,input框中显示的是经过转换的* ...
- 浅谈Django的Signals的实现
浅谈Django的Signals的实现 在说Signals的实现之前,需要先了解一下发布/订阅模型 模型介绍 发布订阅是一种消息范式,消息的发送者不会将消息直接发送给特定的接收者.而是将消息发送某个频 ...
- python 前端框架比较_浅谈五大Python Web框架
说到Web Framework,Ruby的世界Rails一统江湖,而Python则是一个百花齐放的世界,各种micro-framework.framework不可胜数,不完全列表见: 虽然另一大脚本语 ...
- 从前端Vue/Axios到后端交互--浅谈Vue生命周期、Ajax调用
一.基本需求 介绍: 此项目实现了对数据库数据的增删查改,后端使用Spring+MyBatis+SpringMVC,前端使用了Vue+JavaScript+AJAX,前后端实现了异步交互,前端页面可以 ...
- 浅谈IC前端后端的区别、以及流程简介
数字前端后端的区别.以及流程简介 前端设计(也称逻辑设计)和后端设计(也称物理设计)并没有统一严格的界限,涉及到与工艺有关的设计就是后端设计. 个人理解是: 数字前端以设计架构为起点,以生成可以布局布 ...
- python sys模块作用_浅谈Python中的模块
模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在Python中,一个.py文件就称之为一个模块(Mod ...
- python中文字符串编码_浅谈python下含中文字符串正则表达式的编码问题
前言 Python文件默认的编码格式是ascii ,无法识别汉字,因为ascii码中没有中文. 所以py文件中要写中文字符时,一般在开头加 # -*- coding: utf-8 -*- 或者 #co ...
最新文章
- systemback-----做你折腾的后盾
- 计算机房电源解决方案,apcups电源小型机房电源解决方案
- Leetcode_最后一个单词的长度
- html select选择事件_用 Java 拿下 HTML,分分钟写个小爬虫
- ServletContext_概述
- laravel关闭crsf
- 再看数据库——(2)视图
- Kali aircrack-ng wifi密码破解(暴力)(1)
- 美的物联平台的云上实践与应用
- 网易开源云原生日志系统!
- 在线教育系统源码 知识付费系统源码 网络直播源码
- 万字雄文前瞻丨区块链及隐私计算在传统企业中的技术认知与进阶思考
- 海康、大华、科达、华为摄像机的二次开发Demo、SDK
- 二、从零开始学逆向之XCTF-logmein
- MTK6577手机有哪些 MT6577手机汇总
- 用python爬取校花网图片
- Andromeda 源码解析 (同步获取服务)
- (零基础)入门python学习四步骤,附上Python全栈学习路线大刚!
- Python模块查找路径
- 6g运行和8g运行有什么差别
热门文章
- python中以表示语块_scikitlearn:将数据拟合成块与将其全部拟合到on
- 看了就知道为什么别人C语言学习效率那么高了
- 数据结构算法模拟系统
- java使用Executor(执行器)管理线程
- 共享内存简介及docker容器的shm设置与修改
- php的filter input,php中filter_input函数用法分析
- php sql取数据生成数组中,php中实现数组生成要执行的sql语句
- 华为鸿蒙系统还没发布吗,华为没有孤军奋战,合作伙伴“雪中送炭”,鸿蒙系统正式发布!...
- 在dom最前面插入_JavaScript中的DOM
- 知道python测试答案_大数据分析的python基础知道章节测试答案