и изменить в "edit_page"

следую этому уроку, чтобы научиться делать вики-страницу с Django. Тем не менее, это сделано в Django 0,96, и я использую Django 1,3, поэтому есть некоторые вещи, которые отличаются. Кое-что я уже исправил, но этот, кажется, не может заставить его работать.

Я сделал форму, которая представляет данные для просмотра. Это форма:

<form method="post" action"/wikicamp/{{page_name}}/save/">{% csrf_token %}
    <textarea name="content" rows="20" cols="60">{{content}}</textarea><br>
    <input type="submit" value="Save Page"/>
</form>

и / wikicamp / {{page_name}} / save / url перенаправляет в представление save_page:

from django.http import HttpResponseRedirect
from django.core.context_processors import csrf

def save_page(request, page_name):
    c = {}
    c.update(csrf(request))
    content = c.POST["content"]
    try:
        page = Page.objects.get(pk=page_name)
        page.content = content
    except Page.DoesNotExist:
        page = Page(name=page_name, content=content)
    page.save()
    return HttpResponseRedirect("wikicamp/" + page_name + "/")

Однако проблема в том, что я получаю эту ошибку:

Help

Reason given for failure:

    CSRF token missing or incorrect.


In general, this can occur when there is a genuine Cross Site Request Forgery, or when Django's CSRF mechanism has not been used correctly. For POST forms, you need to ensure:

    The view function uses RequestContext for the template, instead of Context.
    In the template, there is a {% csrf_token %} template tag inside each POST form that targets an internal URL.
    If you are not using CsrfViewMiddleware, then you must use csrf_protect on any views that use the csrf_token template tag, as well as those that accept the POST data.

You're seeing the help section of this page because you have DEBUG = True in your Django settings file. Change that to False, and only the initial error message will be displayed.

You can customize this page using the CSRF_FAILURE_VIEW setting.

Поэтому я прочитал некоторые документы, например,http://docs.djangoproject.com/en/dev/ref/contrib/csrf/#how-to-use-it, Я попытался сделать это, однако, и это все равно дало ту же ошибку.

Итак: у кого-нибудь есть идея, как правильно обрабатывать данные постов в Django 1.3?

Я думаю, что это как-то связано с: функция представления использует RequestContext для шаблона, а не Context. но я не знаю, что это такое.

Кстати, в моем терминале, который показывает http-запрос localhost, он говорит следующее: {% csrf_token%} был использован в шаблоне, но контекст не предоставил значение. Обычно это вызвано тем, что не используется RequestContext.

Ответы на вопрос(4)

Ваш ответ на вопрос