Django:CSRF令牌丢失或不正确

我有Django的1.3版。我尝试按照其他人的问题指定localhost:8000,但这对我不起作用。我正在尝试使用文件上传表单,但是我收到一个错误,即form.py没有CSRF令牌。

form.py:

class UploadFileForm(forms.Form):

title = forms.CharField(max_length=50)

file = forms.FileField()

views.py:

def upload_file(request):

c = {}

c.update(csrf(request))

if (not request.user.is_authenticated()) or (request.user == None):

return HttpResponseRedirect("/?error=11")

if request.method == 'POST':

form = c['UploadFileForm'] = UploadFileForm(request.POST, request.FILES, c, context_instance=RequestContext(request))

if c['UploadFileForm'].is_valid():

handle_uploaded_file(request.FILES['file'])

return HttpResponseRedirect('/success/url/')

else:

form = c['UploadFileForm'] = UploadFileForm()

return render_to_response('fileupload/upload.html', {'form': c['UploadFileForm']})

upload.html:

{% block main_content %}

<form action="fileupload/form.py" enctype="multipart/form-data" method="POST">

{% csrf_token %}

<table>

<tr><td>Title:</td><td><input type="text" name="title" /></td></tr>

<tr><td>File:</td><td><input type="file" name="file" /></td></tr>

</table>

<input type="submit" value="Submit" class = "float_right button_input" />

</form>

{% endblock main_content %}

我很沮丧,请告诉我一些尝试的方法。谢谢

回答:

你需要传递RequestContextrender_to_responsecsrf_token

为此:(views.py)

from django.template import RequestContext

...

return render_to_response('fileupload/upload.html', {'form': c['UploadFileForm']}, RequestContext(request))

# Added RequestContext

这会将csrf的令牌传递到模板。

以上是 Django:CSRF令牌丢失或不正确 的全部内容, 来源链接: utcz.com/qa/412275.html

回到顶部