2016-04-03 63 views
0

這是views.py代碼禁止403 CSRF錯誤使用request.post.get時()方法從html頁面

from django.shortcuts import render 
from django.http import HttpResponse 
from django.http import HttpRequest 
from django.db import models 
from datetime import datetime 
# Create your views here. 

def postdata(request): 
    if request.method == "POST": 
     data=request.POST.get('data') 
return HttpResponse(data)` 

這是HTML代碼

<form action="http://127.0.0.1:8000/minor/postdata/" method="POST"> 
data:<br> 
    <input type="text" name="data"><br> 


<input type="submit" value="Submit"> 

</form> 

我無法找到從簡單的HTML頁面發佈數據請求的解決方案 我可以讓代碼適用於GET請求。 我需要連接這個服務器從Android應用程序

回答

0

這是因爲你沒有發送csrf_token您的發佈請求。出於安全原因,django在所有POST請求中檢查csrf_tokens。

你可以在你的模板使用csrf_token templatetag添加csrf_token,像這樣:

<form action="http://127.0.0.1:8000/minor/postdata/" method="POST"> 
{% csrf_token %} 

閱讀:How to use CSRF token in Django

+0

嗯,我使用簡單的HTML頁面....沒有模板,直接調用網址從頁面 –

+0

如果你沒有檢查CSRF的視圖,那麼在你的視圖中使用'csrf_except'裝飾器。否則,您將不得不使用JS來獲取csrf cookie,然後將其值插入到表單中。 – v1k45