Я осуществил следующий пример из djangobook, chapter 7, Tying Form objects into views
(я использую Django1.4):Пример Djangobook: POST без {% csrf_token%} и передачи context_instance = RequestContext (запрос). Как?
# views.py
from django.shortcuts import render_to_response
from mysite.contact.forms import ContactForm
def contact(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
send_mail(
cd['subject'],
cd['message'],
cd.get('email', '[email protected]'),
['[email protected]'],
)
return HttpResponseRedirect('/contact/thanks/')
else:
form = ContactForm()
return render_to_response('contact_form.html', {'form': form})
# contact_form.html
<html>
<head>
<title>Contact us</title>
</head>
<body>
<h1>Contact us</h1>
{% if form.errors %}
<p style="color: red;">
Please correct the error{{ form.errors|pluralize }} below.
</p>
{% endif %}
<form action="" method="post">
<table>
{{ form.as_table }}
</table>
<input type="submit" value="Submit">
</form>
</body>
</html>
Когда я иду в URL, что я привязан к этой точке зрения и представить форму, я получаю Forbidden(403) CSRF verification failed, Request aborted
. Я должен был добавить {% csrf_token %}
после <form action="" method="post">
и передать context_instance=RequestContext(request)
в render_to_response
, чтобы заставить его работать. Есть ли что-то, что я делал неправильно/некоторые настройки, которые я наблюдал, потому что я не понимаю, как автор получил этот пример, работая без поправок, которые мне пришлось сделать. Btw Я ничего не менял из конфигурации настроек по умолчанию.
Я предположил, что эта часть уже обновлена для django 1.4. В заявлении говорится, что авторы получают его обновление для 1.4-1.5, а URL-адрес - 'djangobook/en/2.0'. У вас есть идея, какие части обновлены для 1.4? Возможно, было бы полезно указать для каждой главы, для какой версии она применима. – Bentley4