django中的ajax_post请求
Ajax_post请求,涉及到post请求就会遇到csrf问题,ajax的post请求,同样需要发生csrf_token。
相比较get请求,post请求:
1、需要一字典格式整合数据
2、需要一个csrf_token,键必须是csrfmiddlewaretoken
其他部分和get请求类似
1、静态页面 ajax_post.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="/static/js/jquery.min.js"></script>
</head>
<body>
<form >//ajax提交不在需要action method form来提交
{% csrf_token %}{% for u in userForm %}<p><label >{{ u.label }}</label>{{ u }}</p>{% endfor %}<p><input type="button" id="submit" value="提交"></p>
//label别名
</form>
<script>$("#submit").click(function () {//收集数据var username=$("#id_username").val();//val获取输入的值 #id_username获取框var password=$("#id_password").val();//id等于id_字段名var age=$('#id_age').val();var email=$("#id_email").val();var birthday=$("#id_birthday").val();var csrfmiddlewaretoken='{{ csrf_token }}';send_data={"username":username,//和后端对应"password":password,"age":age,"email":email,"birthday":birthday,"csrfmiddlewaretoken":csrfmiddlewaretoken,};//console.log(data)//编写请求的urlvar url="/apd/";$.ajax({url:url,//路由type:"POST",//POST请求类型data:send_data,//发送数据success:function (data) {//data数据console.log(data)},error:function(error){console.log(error)}})})
</script>
</body>
</html>
2、视图文件 views.py
def ajax_post(request):userForm=UserForm()return render (request,"ajax_post.html",locals())
def ajax_post_data(request):result={"status":"error","content":"请求过来了"}if request.method=="POST":#如果请求类型是POSTdata=UserForm(request.POST)#将post请求的数据传递给UserForm进行校验#检验数据是否符合规定if data.is_valid():#如果校验成功,返回true #valid有效的clean_data=data.cleaned_data#返回一个放着校验过的数据的字典user = UserModel()#对象实例化user.username=clean_data.get("username")#规定user.password=clean_data.get("password")user.age=clean_data.get("age")user.email=clean_data.get("email")user.birthday=clean_data.get("birthday")user.save()#保存到数据库result["status"]="success"result["content"]="数据保存成功"else:result["content"]="<br>".join(data.errors)#errors result[content]=数据错误字段<br>数据错误字段#多个错误字段之间用<br>分割else:result["content"]="请求类型错误"return JsonResponse(result)#ajax得用Json/Json是一种数据格式
3、forms.py form表单文件
from django import forms
class UserForm(forms.Form):#与数据库类似,但不是数据库username=forms.CharField(required=False,label="用户名",help_text="用户名可以为空")password=forms.CharField(max_length=12,min_length=6,label="密码")#label是别名的意思age=forms.IntegerField(label="年龄")email=forms.EmailField(label="邮箱")birthday=forms.DateField(label="生日")def clean_username(self):#所有自定义的效验的方法一定是clean_效验的字段名username=self.cleaned_data.get('username')if "li" in username:raise forms.ValidationError("昵称违规")else:return username
4、数据库模型
from django.db import modelsclass LoginUser(models.Model):username=models.CharField(max_length=32)password = models.CharField(max_length=32)
class UserModel(models.Model):#建立表单提交的数据库#表单数据库username=models.CharField(max_length=32)password=models.CharField(max_length=32)age=models.IntegerField()email=models.EmailField()birthday=models.DateField()
5、路由配置
path(‘ap/’,ajax_post),
path(‘apd/’,ajax_post_data),
django中的ajax_post请求相关推荐
- django中获取sessionid
之前在django中一直用session处理一些问题,这次想拿到sessionid数据,发现跟以前的想法不太一样: django中的sessionid要通过下面这种方式取到: session_key ...
- Django框架深入了解_05 (Django中的缓存、Django解决跨域流程(非简单请求,简单请求)、自动生成接口文档)(一)
阅读目录 一.Django中的缓存: 前戏: Django中的几种缓存方式: Django中的缓存应用: 二.跨域: 跨域知识介绍: CORS请求分类(简单请求和非简单请求) 示例: 三.自动生成接口 ...
- Django中如何防范CSRF跨站点请求伪造攻击
CSRF概念 CSRF跨站点请求伪造(Cross-Site Request Forgery). 攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望 ...
- django ajax页面跳转,Django中的AJAX GET请求后重定向
我是新的Django和AJAX(javascript). 最后,我可以发送一些参数到Django视图.这个视图呈现一个编辑表单. 我发送的参数和视图响应的形式与我需要的信息,但我不能重定向到从视图呈现 ...
- ajax的post请求出现403错误,如何解决Django中ajax发送post请求报403错误CSRF验证失败的问题...
如何解决Django中ajax发送post请求报403错误CSRF验证失败的问题 发布时间:2021-02-05 14:23:57 来源:亿速云 阅读:92 作者:小新 这篇文章主要介绍了如何解决Dj ...
- django中使用celery简单介绍
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 本章节我们重点在于实现,如何存储任务的结果. 我们将任务函数改为: from celery_demo.celery im ...
- Django 中的 cookie 和 session
一.cookie 由于HTTP协议是无状态的,而服务器端的业务必须是要有状态的.Cookie诞生的最初目的是为了存储web中的状态信息,以方便服务器端使用.比如判断用户是否是第一次访问网站.目前最新的 ...
- Django中提供的6种缓存方式
由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用: 缓存,缓存将一个某个views的返回值保存至内存或者memcache中, ...
- 如何在Django中进行调试,好方法? [关闭]
因此,我开始学习使用Python和更高版本的Django进行编码. 第一次很难查看回溯,实际上要弄清楚我做错了什么以及语法错误在哪里. 现在已经过去了一段时间,而且我想我已经有了调试Django代码的 ...
最新文章
- Django运维后台的搭建之一:使用model建立数据信息
- 立创eda封装转cadence_立创EDA05、检查封装、生成PCB
- 金融风控实战——集成学习
- 电脑账户头像怎么删掉_情侣头像丨情侣头像一男一女背影
- python 网络爬虫介绍
- 软件问题造成的经济损失案例_公司印章管理使用哪些行为会造成法律风险隐患...
- 为什么手机版scp进不去_SCP1471,只属于你一人你的异常狗子,scp基金会系列
- 【转】【UML】使用Visual Studio 2010 Team System中的架构师工具(设计与建模)
- quartz.net 执行后台任务
- lcd液晶字体_等离子电视与液晶电视的区别
- SpringMVC使用ModelAndView进行重定向
- 【转载】VMware完全卸载
- 服务器控件的使用注意事项
- TCP 协议有什么缺陷?
- 第二章 第七课 Scratch作品:神奇的小猫(脚本块:外观)
- c语言swtitch输入字母输出,郝斌 C语言笔记
- 无尽战记手游超能辅助脚本工具 无尽战记手游攻略介绍
- 这些年MAC下我常用的那些快捷键
- 物流SaaS是大势所趋,oTMS抢占先发优势
- springboot 数据pdf下载
热门文章
- java安全编码指南之:对象构建
- 关于Storm Tick
- python安装scrapy框架命令_python爬虫中scrapy框架是否安装成功及简单创建
- Java并发容器(一) CocurrentHashMap的应用及实现
- Effective Java之接口优先于反射机制(五十三)
- 04.elasticsearch-dynamic_mapping_and_index_template
- 剑指 Offer 28. 对称的二叉树【无取巧,易于理解!】
- 想满分的看这里:1015 德才论 (25分)
- 有一个OEM制造商代理做HP笔记本电脑(Laptop),后来该制造商得到了更多的品牌笔记本电脑的订单Acer,Lenovo,Dell,该OEM商发现,如果一次同时做很多个牌子的本本,有些不利于管理。利
- 解题报告——蓝桥杯 试题 基础练习 2n皇后问题(附n皇后代码)