1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > django中的ajax_post请求

django中的ajax_post请求

时间:2022-05-30 13:36:24

相关推荐

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 formsclass 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),

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。