django - csrf_token 的问题

标签 django forms django-csrf

我在 django 教程中做 wiki 并且在教程中使用 django 的早期版本,其中 csrf token 不是强制性的。我已将 {% csrf_token %} 添加到表单中,但是我不确定在 View 中该做什么。请帮忙。

这是表格:

<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>

View .py:
def view_page(request, page_name):
    try:
        page = Page.objects.get(pk=page_name)
    except Page.DoesNotExist:
        return render_to_response("create.html", {"page_name" : page_name})

    return render_to_response("view.html", {"page_name" : page_name,
                                            "content" : page.content})

def edit_page(request, page_name):
    c = {}
    c.update(csrf(request))
    try:
        page = Page.objects.get(pk=page_name)
        contents = page.content
    except Page.DoesNotExist:
        content = ""
    return render_to_response("edit.html", {"page_name" : page_name,
                                            "content" : content}, c)


def save_page(request, page_name):
    content = request.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 + "/")

这是错误
TypeError at /wikicamp/start/edit/
pop expected at least 1 arguments, got 0

最佳答案

你还没有完全理解步骤3 here :您需要使用 RequestContext 来确保上下文处理器运行。

return render_to_response("edit.html", {"page_name" : page_name,
                                        "content" : content},
                           context_instance=RequestContext(request))

有了这个,你就不需要 c.update(csrf(request))少量。

关于django - csrf_token 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7678231/

相关文章:

django - 为 Django 测试的输出着色

forms - 在窗体 VB6 中显示用户控件

javascript - 尝试使用 ajax 上传文件时,CSRF 保护总是失败

jquery - 如何使用 jQuery/AJAX 访问 views.py 中的变量?

python - 具有使用通用关系的动态 upload_to 函数的 Django 图像模型

jquery - 视差滚动背景上的水平滚动注册表格

javascript - 如何在 Javascript 生成的 HTML 表单中包含 Django 1.2 的 CSRF token ?

django - django 的零星 403 "CSRF FAILURECSRF cookie not set"错误

python - Slugify 未将标题保存为 slug Django 2 : NoReverseMatch error

html - web-app 上下文和 FORM ACTION 属性?