我是python新手。 Django也是新的。我試圖發出AJAX請求並按照說明here。起初,檢索csrf cookie的結果始終爲空,因此我找到了一個名爲ensure_csrf_cookie的裝飾器方法。問題是它需要一個視圖,我不知道要傳遞什麼視圖以及我可以在哪裏獲得參考。代碼很簡單:我該如何使用ensure_csrf_cookie?
from django.shortcuts import render_to_response
from django.core.context_processors import csrf
from django.views.decorators.csrf import ensure_csrf_cookie
def csv_to_xform(csv, template):
return render_to_response(template, { "data": "it works!" })
我需要使用基於類的視圖嗎?如果是這樣,是否有更好的方法來設置Cookie?我不想使用描述here的方法,因爲我不想手動處理值。
的代碼的其餘部分是如下:
sandbox.html:
<!doctype html>
<html>
<head>
<title>Sandbox</title>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="/static/js/csrf.js"></script>
<script type="text/javascript">
$(function() {
$('#send-csv-btn').click(function() {
$.post('/csv', {
data: '1, 2, 3',
success: function (response) {
console.debug(response);
},
error: function (response) {
console.debug(response);
}
});
});
});
</script>
</head>
<body>
<form>
{% csrf_token %}
<input type="button" id="send-csv-btn" />
</form>
</body>
</html>
urls.py:
urlpatterns = patterns('',
url(r'^$', 'dkobo.formbuilder.views.main', name='fb'),
url(r'^admin/', include(admin.site.urls)),
url(r'^csv$', 'dkobo.formbuilder.views.csv_to_xform', { "template": "sandbox-stub.html" }),
url(r'^sandbox$', 'dkobo.formbuilder.views.sandbox')
)
settings.py:
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
我上傳了其餘的代碼......你能舉個例子嗎? –
我更新了回答 – Nikita
很好,它的工作!謝謝。 –