我正在编写一个 Django 应用程序。这是我的代码:
edit.module.html(模板;删除额外的 html 标记):
<h1>Enter the HTML below</h1>
<form action="./update/" method="post">
{% csrf_token %}
<textarea cols='55' rows='15'></textarea>
<input type='submit' value='Submit' />
</form>
网址.py
url(r'^myapp/update/$', 'myproj.myapp.views.update_module'),
视图.py
from django.http import HttpResponse
from django.shortcuts import render_to_response, get_object_or_404
from django.core.context_processors import csrf
from django.template import RequestContext
#Select the module you want to edit
def edit_modules(request):
lpconf = {"module_to_edit" : "top"}
return render_to_response('admin/edit.module.html', lpconf, context_instance=RequestContext(request))
def update_module(request):
return render_to_response('admin/updated.html', context_instance=RequestContext(request))
当我提交表单时,我收到 CSRF 错误:“CSRF 验证失败。请求中止。”
我遵循 Django 文档(https://docs.djangoproject.com/en/dev/ref/contrib/csrf/)并尝试解决问题,但我做不到。我在这里做错了什么?
谢谢。
更新:更新了 view.py 函数 edit_modules 和 update_modules。edit_modules 是渲染表单的工具,update_modules 是处理表单的工具。现在,我没有收到 CSRF 错误。我现在收到错误:空模块名称
更新:我能够修复它。我使用一个视图来呈现表单,而另一个视图来处理它。我必须将上下文添加到呈现表单的第一个视图。