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请求相关推荐

  1. django中获取sessionid

    之前在django中一直用session处理一些问题,这次想拿到sessionid数据,发现跟以前的想法不太一样: django中的sessionid要通过下面这种方式取到: session_key ...

  2. Django框架深入了解_05 (Django中的缓存、Django解决跨域流程(非简单请求,简单请求)、自动生成接口文档)(一)

    阅读目录 一.Django中的缓存: 前戏: Django中的几种缓存方式: Django中的缓存应用: 二.跨域: 跨域知识介绍: CORS请求分类(简单请求和非简单请求) 示例: 三.自动生成接口 ...

  3. Django中如何防范CSRF跨站点请求伪造攻击

    CSRF概念 CSRF跨站点请求伪造(Cross-Site Request Forgery). 攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望 ...

  4. django ajax页面跳转,Django中的AJAX GET请求后重定向

    我是新的Django和AJAX(javascript). 最后,我可以发送一些参数到Django视图.这个视图呈现一个编辑表单. 我发送的参数和视图响应的形式与我需要的信息,但我不能重定向到从视图呈现 ...

  5. ajax的post请求出现403错误,如何解决Django中ajax发送post请求报403错误CSRF验证失败的问题...

    如何解决Django中ajax发送post请求报403错误CSRF验证失败的问题 发布时间:2021-02-05 14:23:57 来源:亿速云 阅读:92 作者:小新 这篇文章主要介绍了如何解决Dj ...

  6. django中使用celery简单介绍

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 本章节我们重点在于实现,如何存储任务的结果. 我们将任务函数改为: from celery_demo.celery im ...

  7. Django 中的 cookie 和 session

    一.cookie 由于HTTP协议是无状态的,而服务器端的业务必须是要有状态的.Cookie诞生的最初目的是为了存储web中的状态信息,以方便服务器端使用.比如判断用户是否是第一次访问网站.目前最新的 ...

  8. Django中提供的6种缓存方式

    由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用: 缓存,缓存将一个某个views的返回值保存至内存或者memcache中, ...

  9. 如何在Django中进行调试,好方法? [关闭]

    因此,我开始学习使用Python和更高版本的Django进行编码. 第一次很难查看回溯,实际上要弄清楚我做错了什么以及语法错误在哪里. 现在已经过去了一段时间,而且我想我已经有了调试Django代码的 ...

最新文章

  1. Django运维后台的搭建之一:使用model建立数据信息
  2. 立创eda封装转cadence_立创EDA05、检查封装、生成PCB
  3. 金融风控实战——集成学习
  4. 电脑账户头像怎么删掉_情侣头像丨情侣头像一男一女背影
  5. python 网络爬虫介绍
  6. 软件问题造成的经济损失案例_公司印章管理使用哪些行为会造成法律风险隐患...
  7. 为什么手机版scp进不去_SCP1471,只属于你一人你的异常狗子,scp基金会系列
  8. 【转】【UML】使用Visual Studio 2010 Team System中的架构师工具(设计与建模)
  9. quartz.net 执行后台任务
  10. lcd液晶字体_等离子电视与液晶电视的区别
  11. SpringMVC使用ModelAndView进行重定向
  12. 【转载】VMware完全卸载
  13. 服务器控件的使用注意事项
  14. TCP 协议有什么缺陷?
  15. 第二章 第七课 Scratch作品:神奇的小猫(脚本块:外观)
  16. c语言swtitch输入字母输出,郝斌 C语言笔记
  17. 无尽战记手游超能辅助脚本工具 无尽战记手游攻略介绍
  18. 这些年MAC下我常用的那些快捷键
  19. 物流SaaS是大势所趋,oTMS抢占先发优势
  20. springboot 数据pdf下载

热门文章

  1. java安全编码指南之:对象构建
  2. 关于Storm Tick
  3. python安装scrapy框架命令_python爬虫中scrapy框架是否安装成功及简单创建
  4. Java并发容器(一) CocurrentHashMap的应用及实现
  5. Effective Java之接口优先于反射机制(五十三)
  6. 04.elasticsearch-dynamic_mapping_and_index_template
  7. 剑指 Offer 28. 对称的二叉树【无取巧,易于理解!】
  8. 想满分的看这里:1015 德才论 (25分)
  9. 有一个OEM制造商代理做HP笔记本电脑(Laptop),后来该制造商得到了更多的品牌笔记本电脑的订单Acer,Lenovo,Dell,该OEM商发现,如果一次同时做很多个牌子的本本,有些不利于管理。利
  10. 解题报告——蓝桥杯 试题 基础练习 2n皇后问题(附n皇后代码)