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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ajax校验的优点,django框架中ajax的使用及避开CSRF 验证的方式详解

發布時間:2025/3/19 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ajax校验的优点,django框架中ajax的使用及避开CSRF 验证的方式详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文實例講述了django框架中ajax的使用及避開CSRF 驗證的方式。分享給大家供大家參考,具體如下:

ajax(Asynchronous Javascript And Xml) 異步javascript和XML

ajax的優點

使用javascript技術向服務器發送異步請求

ajax無須刷新整個頁面;

由于ajax響應的是局部頁面,因此性能要高

當以get的方式向服務器發送請求:

views.py

def user_valid(request):

name=request.GET.get("name")

ret=Author.objects.filter(name=name)

res={"state":True,"msg":""}

if ret:

res["state"]=False

res["msg"]="用戶存在"

import json

return HttpResponse(json.dumps(res)) #向ajax發送json數據

Title

ajax請求

send_ajax


用戶名:

$(".s1").click(function(){

$.ajax({

url:"/send_ajax/",

type:"get",

data:{},

success:function(data){

$(".con").html(data)

}

})

});

$("#user").blur(function () { //鼠標失去焦點事件

$.ajax({

url: "/user_valid/",

type: "get",

data: {"name": $("#user").val()},

success: function (data) {

console.log(data);

console.log(typeof data);

var data = JSON.parse(data); //接收傳來的信息,進行反序列化,這里JSON要輸入大寫否則出不來

console.log(data);

console.log(typeof data);

if (!data.state) {

$(".error").html(data.msg).css("color", "red") #這里的css樣式是以,隔開的

}

}

})

});

下面是以post的方式提交,并且跨域偽造csrf的方式(三種)

def user_valid(request):

name = request.POST.get("name")

ret=Author.objects.filter(name=name)

res={"state":True,"msg":""}

if ret:

res["state"]=False

res["msg"]="用戶存在"

import json

return HttpResponse(json.dumps(res))

Title

ajax請求

send_ajax


{% csrf_token %} #方式一

用戶名:

$(".s1").click(function(){

$.ajax({

url:"/send_ajax/",

type:"get",

data:{},

success:function(data){

$(".con").html(data)

}

})

});

//下面改成post請求如何避免crsf錯誤呢

$("#user").blur(function () {

$.ajax({

url: "/user_valid/",

type: "post",

data: {"name": $("#user").val(),

"csrfmiddlewaretoken":$("[name='csrfmiddlewaretoken']").val(), //方式二

headers:{"X-CSRFToken":$.cookie('csrftoken')}, //方式三

},

success: function (data) {

console.log(data);

console.log(typeof data);

var data = JSON.parse(data);

console.log(data);

console.log(typeof data);

if (!data.state) {

$(".error").html(data.msg).css("color", "red")

}

}

})

});

下面是效果

如何不用上面的方式,也可以通過csrf中的csrf_exempt 的方法排除驗證csrf

方式一:在views.py里面修改

#urls.py里面

url(r'^login/$',views.LoginView.as_view()),

#views.py

from django.shortcuts import render,HttpResponse,redirect

from django.views.decorators.csrf import csrf_exempt #導入

# Create your views here.

from rbac.models import UserInfo

from django.views import View

class LoginView(View):

def get(self,request):

return render(request,"login.html")

def post(self,request):

user=request.POST.get("user")

pwd=request.POST.get("pwd")

user=UserInfo.objects.filter(name=user,pwd=pwd).first()

print(user,user.pk)

if user:

request.session["user_id"]=user.pk

#將用戶的權限注冊到session中

permission_list=[]

ret=user.roles.all().values("permissions__url").distinct()

for per in ret:

permission_list.append(per.get("permissions__url"))

# print(ret)

request.session["permission_list"]=permission_list

return HttpResponse("ok")

return HttpResponse("用戶名或密碼錯誤")

@csrf_exempt #當繼承django里面的類時,必須要寫一個dispath方式,并寫在它上面

def dispatch(self,*args,**kwargs):

# return super(LoginView,self).dispatch(*args,**kwargs) #這兩個方法都可以

return super().dispatch(*args, **kwargs)

方式二:加入到urls里面

# urls

from django.views.decorators.csrf import csrf_exempt

url(r'^login/$',csrf_exempt(views.LoginView.as_view())), #加入到urls里面

#views.py

from django.shortcuts import render,HttpResponse,redirect

# Create your views here.

from rbac.models import UserInfo

from django.views import View

class LoginView(View):

def get(self,request):

return render(request,"login.html")

def post(self,request):

user=request.POST.get("user")

pwd=request.POST.get("pwd")

user=UserInfo.objects.filter(name=user,pwd=pwd).first()

print(user,user.pk)

if user:

request.session["user_id"]=user.pk

#將用戶的權限注冊到session中

permission_list=[]

ret=user.roles.all().values("permissions__url").distinct()

for per in ret:

permission_list.append(per.get("permissions__url"))

# print(ret)

request.session["permission_list"]=permission_list

return HttpResponse("ok")

return HttpResponse("用戶名或密碼錯誤")

ajax處理json數據

1 我們在views里面向ajax發送一個json數據

def send_ajax(request):

import json

return HttpResponse(json.dumps({"name":"xinxin"}))

#index.html

Title

ajax請求

send_ajax


{% csrf_token %}

用戶名:

//沒有指定dataType的情況

/* $(".s1").click(function(){

$.ajax({

url:"/send_ajax/",

success:function(data){

console.log(data); //{"name": "xinxin"}

console.log(typeof(data)); //string

}

})

});*/

//指定dataType的情況

$(".s1").click(function(){

$.ajax({

url:"/send_ajax/",

dataType:"json", //主要T要大寫

success:function(data){

console.log(data); //Object {name: "xinxin"} 類型發生了變化

console.log(typeof(data)); // object

},

error:function(jqXHR,textStatus,err){

console.log(err);

console.log("數據錯誤。。。。。。。")

}

})

});

2 向ajax發送一個其他數據時

def send_ajax(request):

return HttpResponse("{'name':'xinxin'}")

#index.html

//指定dataType的情況

$(".s1").click(function(){

$.ajax({

url:"/send_ajax/",

dataType:"json", //主要T要大寫

success:function(data){

console.log(data); //Object {name: "xinxin"} 類型發生了變化

console.log(typeof(data)); // object

},

error:function(jqXHR,textStatus,err){

console.log(err); //報錯打印出錯誤信息

console.log("數據錯誤。。。。。。。") //制定錯誤信息

}

})

});

希望本文所述對大家基于Django框架的Python程序設計有所幫助。

總結

以上是生活随笔為你收集整理的ajax校验的优点,django框架中ajax的使用及避开CSRF 验证的方式详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男人操女人免费视频 | 蜜桃视频无码区在线观看 | 日韩电影中文字幕在线观看 | 狼人狠狠干 | 成人美女免费网站视频 | 黄色一级片在线免费观看 | 男人和女人在床的app | 91sex国产 | 亚洲国产婷婷香蕉久久久久久99 | 超碰天天干 | 少妇高潮一区二区三区69 | 欧美韩国日本一区 | 国产乱国产乱老熟 | 亚洲一区二区电影 | 久久伊人影视 | 黄色一级免费视频 | 超碰av人人 | 日本午夜小视频 | 欧美做受喷浆在线观看 | 秋霞一级视频 | 开心激情五月网 | 无码人妻精品丰满熟人区 | 在线播放无码后入内射少妇 | 亚洲成人第一页 | 国产成人高清视频 | 中文字幕无码日韩专区免费 | 成年人视频在线观看免费 | 亚洲精品a | 国产精品白浆一区二小说 | 色哟哟在线免费观看 | 国产稀缺精品盗摄盗拍 | 四色在线 | 国产毛片毛片毛片毛片毛片毛片 | 四虎国产成人永久精品免费 | 亚洲AV无码一区二区三区少妇 | 日韩精品成人在线观看 | 最近中文字幕在线视频 | 欧美片17c07.com | 男人的天堂av网站 | jizz日本在线播放 | 天堂网中文 | 超碰伦理| 女同亚洲精品一区二区三 | 一级淫片a| 青青草国产成人av片免费 | 亚洲精品国产精品国自产 | 西野翔夫の目の前で犯在线 | 在线观看你懂的视频 | 日韩有码视频在线 | 玩偶姐姐在线观看免费 | 久久av免费观看 | 国产精品电影一区二区三区 | 日韩jizz | 日韩精品视频一区二区三区 | 欧美日韩精品久久久免费观看 | 国产又大又黑又粗免费视频 | 亚洲av永久无码精品三区在线 | 午夜精品久久99蜜桃的功能介绍 | 26uuu精品一区二区 | 国产日本一区二区三区 | 亚洲综合五月天婷婷丁香 | 最新啪啪网站 | 亚洲一区二区三区三州 | 激情 亚洲 | 在线观看a视频 | 亚洲一区二区三区在线视频 | 可以免费看av的网站 | 亚洲中文字幕无码专区 | 欧美午夜精品一区 | 99久久人妻精品免费二区 | 永久av免费| 亚洲一区二区视频在线 | 国产视频一二 | 欧美日韩在线观看一区二区 | 在线免费国产 | 亚洲私人影院 | 欧洲视频一区 | 婷婷超碰 | 男女拍拍拍 | 综合激情网 | 97精品国产97久久久久久免费 | 亚洲无码久久久久 | 朝鲜女人性猛交 | 国产精品无码一区 | 金瓶狂野欧美性猛交xxxx | 91porny丨首页入口在线 | 午夜在线免费视频 | 三级视频黄色 | 一二三av | 在线免费黄色网址 | 玖玖视频| 成人动漫视频 | www.国产精品视频 | 风间由美一区 | 91av视频在线播放 | 欧美视频一区二区在线 | 强行挺进白丝老师翘臀网站 | 欧美在线不卡 | 天天弄天天操 |