gpt4 book ai didi

python - Django:CSRF token 丢失或不正确

转载 作者:IT老高 更新时间:2023-10-28 21:08:44 29 4
gpt4 key购买 nike

错误位于位置 http://127.0.0.1:8000/fileupload/form.py

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

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']})

上传.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 %}

我很困惑,请告诉我一些要尝试的事情。谢谢你

最佳答案

csrf_token

需要在render_to_response中传入 RequestContext

为此:(views.py)

from django.template import RequestContext

...

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

这会将 csrf 的 token 传递给模板。

关于python - Django:CSRF token 丢失或不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8321217/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com