Django(Python)前后端交互
使用Django中自带的模板
前端通过form 表单向后端提交数据
# /template/demo/demo.html
{% if result == 1 %}
<p> 插入成功 </p>
{% else if result==2 %}
<p>插入失败</p>
{% endif %}
<form class="layui-form" method="post" action="{% url 'demo:type_add' %}" enctype="multipart/form-data">
{% csrf_token %}
<input type="text" name="type_name" required autocomplete="off" class="layui-input">
<input type="text" name="type_sort" required autocomplete="off" class="layui-input">
<input type="submit" value="提交">
</form>
后端通过渲染函数传递数据给模板文件并渲染
# /demo/url.py
app_name = '[demo]'
urlpatterns = [
url(r'^type_add/', views.type_add, name='type_add'),
]
# /demo/views.py
def type_add(request):
# 类型名称
type_name = request.POST['type_name']
# 类型排序
type_sort = request.POST['type_sort'] # 数据库操作
result = DemoType.objects.create(type_name=type_name,type_sort=type_sort)
if result:
return render(request, 'demo/demo.html', {'result':1})
else:
//return HttpResponse('插入失败!')
return render(request, 'demo/demo.html', {'result':2})
使用Ajax
前端通过Ajax向后端发送请求提交数据
后端返回响应
前端收到响应后通过js对页面上显示的东西进行修改
代码1:
# 前端
function demo(demo_id) {
$.ajax({
url: 'url',
type: 'POST',
headers: {"X-CSRFToken":'{{ csrf_token }}' },
data: {demo_id: demo_id},
dataType:'json',
success: function (e) {
//通过e获取后端返回的数据并对页面上的显示的东西进行修改 },
}) } # 后端 #路由部分与上面所示的类似 #views.py def demo(request):
//如果是get请求的话 demo_id = request.GET.get('demo_id',0)
demo_id = request.POST.get('demo_id', 0)
user_id = request.session.get('user_id', 0)
return_param = {}
try:
// 数据库操作
demo.objects.update_or_create(users_id=user_id, goods_id=goods_id, status=1)
return_param['status'] = 200
return_param['msg'] = 'success'
except Exception as e:
return_param['status'] = 500
return_param['msg'] = 'fail'
return HttpResponse(json.dumps(return_param))代码2:
#前端
function demo(demo_id) {
$.ajax({
url: 'url',
type: 'POST',
headers: {"X-CSRFToken":'{{ csrf_token }}' },
data: JSON.stringify(data),
dataType:'json',
success: function (e) {
//console.log(e)
//通过e获取后端返回的数据并对页面上的显示的东西进行修改 },
})
} #后端 # 定义一个统用的响应类,方便规范返回给前端东西的格式
# 公共部分可以新建一个文件放在 和settings.py文件 同一个文件夹内
SUCCESS_CODE, FAIL_CODE, PARMS_CODE = 200, 400, 404
class BaseResponse:
def __init__(self, **kwargs):
self.status_code = kwargs.get('code',0)
self.message = kwargs.get('msg','')
self.data = kwargs.get('data',[]) #路由部分与上面所示的类似
# 后端的 views.py部分 def demo(request):
//如果是get请求的话 demo_id = request.GET.get('demo_id',0)
# POST 请求
params = json.loads(request.body)
demo_id = params.get('demo_id',0)
user_id = request.session.get('user_id', 0)
return_param = {}
try:
// 数据库操作
demo.objects.update_or_create(users_id=user_id, demo_id=demo_id, status=1)
return JsonResponse(BaseResponse(code= SUCCESS_CODE, msg='success',data=[]).__dict__)
except Exception as e:
return JsonResponse(BaseResponse(code=FAIL_CODE, msg='fail').__dict__)
注:如需转载请注明出处:https://www.cnblogs.com/zhuchenglin/p/10763795.html
Django(Python)前后端交互的更多相关文章
- Django之META与前后端交互
Django之META与前后端交互 1 提交表单之GET 前端提交数据与发送 1)提交表单数据 2)提交JSON数据 后端的数据接收与响应 1)接收GET请求数据 2)接收POST请求数据 3)响应请 ...
- Python 利用三个简易模块熟悉前后端交互流程
准备工作 在学习Django之前,先动手撸一个简单的WEB框架来熟悉一下前后端交互的整体流程 本次用到的模块: 1.wsgiref,这是一个Python自带的模块,用于构建路由与视图 2.pymysq ...
- 微信小程序-前后端交互
前台手机验证码登录 <view>手机号:</view> <input value="{{phone}}" bindinput="bindPh ...
- Node之简单的前后端交互
node是前端必学的一门技能,我们都知道node是用的js做后端,在学习node之前我们有必要明白node是如何实现前后端交互的. 这里写了一个简单的通过原生ajax与node实现的一个交互,刚刚学n ...
- 解决Django+Vue前后端分离的跨域问题及关闭csrf验证
前后端分离难免要接触到跨域问题,跨域的相关知识请参:跨域问题,解决之道 在Django和Vue前后端分离的时候也会遇到跨域的问题,因为刚刚接触Django还不太了解,今天花了好长的时间,查阅了 ...
- 前后端交互实现(nginx,json,以及datatable的问题相关)
1.同源问题解决 首先,在同一个域下搭建网络域名访问,需要nginx软件,下载之后修改部分配置 然后再终端下cmd nginx.exe命令,或者打开nginx.exe文件,会运行nginx一闪而过, ...
- springboot+mybatis+thymeleaf项目搭建及前后端交互
前言 spring boot简化了spring的开发, 开发人员在开发过程中省去了大量的配置, 方便开发人员后期维护. 使用spring boot可以快速的开发出restful风格微服务架构. 本文将 ...
- 百度ueditor的图片上传,前后端交互使用
百度ueditor的使用 一个文本编辑器,看了网上很多文档写的很乱,这里拾人牙慧,整理下怎么使用. 这个东西如果不涉及到图片附件上传,其实很简单,就是几个前端文件,直接引用,然后配置下ueditor. ...
- SSM-网站后台管理系统制作(4)---Ajax前后端交互
前提:Ajax本身就为前后端交互服务的,实现功能:用户输入信息,实时判断用户的情况,这也是现在登录界面普遍流行的做法.前端js通过注释识别Controller层,该层查询返回,和之前Google验证码 ...
- 【开源.NET】 轻量级内容管理框架Grissom.CMS(第二篇前后端交互数据结构分析)
这是 CMS 框架系列文章的第二篇,第一篇开源了该框架的代码和简要介绍了框架的目的.作用和思想,这篇主要解析如何把sql 转成标准 xml 配置文件和把前端post的增删改数据规范成方便后台解析的结构 ...
随机推荐
- webpack : 无法将“webpack”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
全局安装webpack npm install -g webpack 把node_global加入到环境变量
- ABP core学习之二 IIS部署.NET CORE
本文是关于IIS部署.NET CORE的总结,以后有碰到问题将陆续添加 IIS部署.NET CORE总结 一.服务器环境 首先确定自己项目的core版本,然后下载对应的包在服务器上安装 下载地址: h ...
- 生成透视列之for xml path
临时表#t原始数据: 实现如下格式,即根据Province分组,把每个组对应的City列以某种格式展示: 实现方法: select t.Province,(select city+',' From # ...
- .Net Core----关于MVC中TempData持久化问题
最近在做mvc跨控制器传值的时候发现一个问题,就是有时候TempData的值为null,然后查阅了许多资料,发现了许多都是逻辑和原理什么的(想看原理可以查看原理的文章,本文是用法),但是真正解决的办法 ...
- js中字符串的replace方法区分单双引号
今天遇到一问题,js文件中调用字符串的replace方法,不起作用. 后来排查可能觉得replace("<option value='1'>admin</option&g ...
- 使用javaScript操作页面元素
from selenium import webdriver import time import unittest from selenium.common.exceptions import We ...
- 经验分享:PDF怎么提取页面
PDF文件的页面有很多但有需要的并不是全部,有时候需要其中一页或几页的时候,这个时候我们就需要把单独的页面提取出来,这个时候应该怎么做呢,上次有小伙伴来询问小编,今天小编就为大家分享一下小编自己的编辑 ...
- Redis的学习
单线程架构可参考:https://blog.csdn.net/sunhuiliang85/article/details/73656830
- Leetcode 992 Subarrays with K Different Integers
题目链接:https://leetcode.com/problems/subarrays-with-k-different-integers/ 题意:已知一个全为正数的数组A,1<=A.leng ...
- Shell常用快捷键
编辑命令 ctr+u 删除光标到行首(unix-line-discard) ctrl+k 删除此处至末尾(kill-line) ctr+e 光标移到末尾(end) ctr+a 光标移到行首(ahead ...