エラーは、私はジャンゴのバージョン1.3を持っている場所http://127.0.0.1:8000/fileupload/form.pyジャンゴ:CSRFトークン見つからないか、間違った
です。私は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 %}
。 (views.py)
from django.template import RequestContext
...
return render_to_response('fileupload/upload.html', {'form': c['UploadFileForm']}, RequestContext(request))
# Added RequestContext
このテンプレートにCSRFのトークンを渡し:あなたはこのためにcsrf_token
ためrender_to_responseにRequestContext
を渡す必要があり
あなたが既に持っている: ではこのような場合は、CSRFトークンを必要とする任意のビューであなたが デコレータ最初django.views.decorators.csrf.csrf_protect()を使用する必要があります 挿入しますあなたのテンプレートで '{%csrf_token%}'を使用しました。これはうまくいくはずです。 –
RequestContextを追加しました型エラーが発生しました__init __()は予期せぬキーワード引数 'context_instance'を持っています – user1072646
ありがとう、私はただ考え出しました。あなたが言ったように、RequestContext(request)を追加していました。そしてif文からcとcontext_instance =を取り除いていました。あなたがそれを含むようにあなたの答えを変更するなら、私はそれが正しいとマークします。 – user1072646