django中的csrf與後台模組處理

2021-08-02 04:44:04 字數 1757 閱讀 2098

在表單中使用post方法提交表單資料,需要使用csrf標籤,這是django提供的防止偽裝提交請求的功能。get方法提交資料不用使用csrf

用法:

模板中:

模組中:

def query(request):

if request.post.has_key("productname"):

products = product.objects.filter(name = request.post["productname"])

else:

products = product.objects.all()

pagenum = 1

if request.get.has_key("pid"):

pagenum = request.get['pid']

p = paginator(products,2)  

page = p.page(pagenum)    

return render_to_response("index.html",,context_instance = requestcontext(request))

然而,在模組處理環節,使用render_to_response返回資料時總是報錯csrf驗證失敗根據網上查詢原因如下:

網上原文:

thecontext_instanceparameter inrender_to_responsewasdeprecated in django 1.8, and removed in django 1.10.

the solution is to switch to therendershortcut, which automatically uses arequestcontext.

update your imports and view as follows. note thatrendertakes therequestobject as its first argument.

from

django

.shortcuts

import

render

defmy_view

(request

):context

=return

render

(request

,'my_template.html'

,context

)

在1.10版本的django中已經移除了context_instance引數,而我使用的是1.11版本
方法是換用render方法返回資料:
return render(request,"index.html",)
簡單快捷。

django中csrf的實現機制

1 啟用中介軟體 2 post請求 3 驗證碼 4 表單中新增標籤 django 原生支援乙個簡單易用的跨站請求偽造的防護。當提交乙個啟用csrf 防護的post 表單時,你必須使用上面例子中的csrf token 模板標籤。第一步 django第一次響應來自某個客戶端的請求時,後端隨機產生乙個to...

django中CSRF的問題及解決

什麼是csrf,看介紹 csrf是cross site request forgery的縮寫,稱其為 跨站請求偽造 常與xss想提並論,但它與xss非常不同,並且攻擊方式幾乎相左。xss利用站點內的信任使用者,而csrf則通過偽裝來自受信任使用者的請求來利用受信任的 與xss攻擊相比,csrf攻擊往...

Django中CSRF(跨站請求偽造)

簡介 django為使用者實現防止跨站請求偽造的功能,通過中介軟體 django.middleware.csrf.csrfviewmiddleware 來完成。而對於django中設定防跨站請求偽造功能有分為全域性和區域性。全域性 中介軟體 django.middleware.csrf.csrfvi...