過去兩天通過谷歌,stackoverflow和docs.djangoproject.com翻閱CSRF問題的解決方案。CSRF令牌丟失或不正確(我知道,它之前已被問過!)
免責聲明,我是Django的初學者,並且沿着本書 django的權威指南 - web開發正確。好了,顯然我得到的東西錯了:-(
見下面這樣的一個嘗試,看看你是否能指出任何錯誤,因爲我已經試過計算器上所有的建議,但沒有運氣尚未:
view.py:
from django.shortcuts import render_to_response
from django.template import RequestContext
def add_vehicle(request):
return render_to_response('vehicle.html', RequestContext(request, {}))
vehicle.html:
{% extends "base.html" %}
{% block title %}Vehicle Registration{% endblock %}
{% block content %}
<html>
<head>
</head>
<body>
<form action="/vehicle/" method="post"> {% csrf_token %}
<table width=100%>
<tr>
<td>Reg #:</td>
<td><input type="text" name="regnumber"></td>
<td></td>
</tr>
<tr>
<td>Model:</td>
<td><input type="text" name="model"></td>
<td></td>
</tr>
<tr>
<td>Manufacturer:</td>
<td><input type="text" name="manufacturer"></td>
<td></td>
</tr>
<tr>
<td>Year:</td>
<td><input type="text" name="year"></td>
<td></td>
</tr>
<tr>
<td>Chassis #:</td>
<td><input type="text" name="chasisnumber"></td>
<td></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Submit">
<input type="submit" value="Clear">
</td>
<td></td>
</tr>
</table>
</form>
</body>
</html>
{% endblock %}
我希望這不是太多的代碼爲stackoverflow。
現在,我不斷收到 CSRF令牌丟失或不正確。
請協助。
編輯(添加上錯誤的詳細信息)
settings.py看起來像這樣:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
這裏是控制檯顯示,當我打開vehicle.html頁:
warnings.warn("A {% csrf_token %} was used in a template, but the context did not provide the value. This is usually caused by not using RequestContext.")
-1:「我知道,它以前被問過!」但是你拒絕搜索它或引用它?很不禮貌。 – 2012-02-09 03:21:04
對不起,出現粗魯。但是我看了所有提出的問題和提供的所有答案,並且覺得在同樣的問題上增加了另一個問題,但是我沒有替代方案。其實目的是告訴我,我很欣賞這個問題是重複的,但沒有回答我的具體情況。我的錯 – lukik 2012-02-09 06:40:22
你有沒有在Apache下的mod_wsgi中運行多個Django站點? – 2012-02-09 10:44:05