在表單中使用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_instance
parameter inrender_to_response
wasdeprecated in django 1.8, and removed in django 1.10.
the solution is to switch to therender
shortcut, which automatically uses arequestcontext
.
update your imports and view as follows. note thatrender
takes therequest
object 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...