日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

django中的ajax_post请求

發(fā)布時間:2024/1/23 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django中的ajax_post请求 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Ajax_post請求,涉及到post請求就會遇到csrf問題,ajax的post請求,同樣需要發(fā)生csrf_token。
相比較get請求,post請求:
1、需要一字典格式整合數(shù)據(jù)
2、需要一個csrf_token,鍵必須是csrfmiddlewaretoken
其他部分和get請求類似
1、靜態(tài)頁面 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 () {//收集數(shù)據(jù)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,//和后端對應(yīng)"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,//發(fā)送數(shù)據(jù)success:function (data) {//data數(shù)據(jù)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請求的數(shù)據(jù)傳遞給UserForm進(jìn)行校驗#檢驗數(shù)據(jù)是否符合規(guī)定if data.is_valid():#如果校驗成功,返回true #valid有效的clean_data=data.cleaned_data#返回一個放著校驗過的數(shù)據(jù)的字典user = UserModel()#對象實例化user.username=clean_data.get("username")#規(guī)定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()#保存到數(shù)據(jù)庫result["status"]="success"result["content"]="數(shù)據(jù)保存成功"else:result["content"]="<br>".join(data.errors)#errors result[content]=數(shù)據(jù)錯誤字段<br>數(shù)據(jù)錯誤字段#多個錯誤字段之間用<br>分割else:result["content"]="請求類型錯誤"return JsonResponse(result)#ajax得用Json/Json是一種數(shù)據(jù)格式

3、forms.py form表單文件

from django import forms class UserForm(forms.Form):#與數(shù)據(jù)庫類似,但不是數(shù)據(jù)庫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("昵稱違規(guī)")else:return username

4、數(shù)據(jù)庫模型

from django.db import modelsclass LoginUser(models.Model):username=models.CharField(max_length=32)password = models.CharField(max_length=32) class UserModel(models.Model):#建立表單提交的數(shù)據(jù)庫#表單數(shù)據(jù)庫username=models.CharField(max_length=32)password=models.CharField(max_length=32)age=models.IntegerField()email=models.EmailField()birthday=models.DateField() 5、路由配置

path(‘a(chǎn)p/’,ajax_post),
path(‘a(chǎn)pd/’,ajax_post_data),

總結(jié)

以上是生活随笔為你收集整理的django中的ajax_post请求的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。