私の問題でthis very simple codeが見つかりましたが、プロジェクトでそれを繰り返そうとしましたが、結果はありませんでした。 私はすべてを正しく行うと思いますが、結果は悪いです。djangoでサーバーにファイルをアップロードするには?
私はそう:、私はファイルをアップロードするのを待ってる
<body>
<form method="post">{% csrf_token %}
{{ form }}
<p><input type="submit" value="Upload"/></p>
</form>
</body>
:
forms.py
class UploadFileForm(forms.Form):
docfile = forms.FileField(
label='select file pls'
)
views.py
class CabinetView(TemplateView, UploadFileForm):
template_name = 'cabinet.html'
def get_context_data(self, **kwargs):
if not self.request.user.is_authenticated() or self.request.user.is_anonymous():
raise ValueError('You are not log in. Please do it.')
context = super(CabinetView, self).get_context_data(**kwargs)
if self.request.user.first_name:
context['current_user'] = self.request.user.first_name
else:
context['current_user'] = self.request.user
return context
def post(self, request):
if self.request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
my_file = self.request.FILES['docfile']
print my_file.name
else:
print 'invalid'
return render(self.request, 'cabinet.html', {'form': form})
HTMLテンプレートをしかし、私がそれをやろうとしているとき(私はボタンは「...ブラウズ」と私は、ファイルを選択した後、それをプッシュしよう)、端末は言う:
POST /cabinet/ HTTP/1.1 200 5740
form: <tr><th><label for="id_docfile">select file pls:</label></th><td><ul class="errorlist"><li>This field is required.</li></ul><input id="id_docfile" name="docfile" type="file" /></td></tr>
invalid
だから、フォームが無効です。なぜ私は理解できません。
申し訳ありませんが非常に簡単な質問です。 私の質問に何か問題があるなら、私は申し訳ありません。それは私の最初の質問stackoverflowです。
私の設定は次のとおりです。 のPython 2.7 ジャンゴ1.9.7 のUbuntu 14.04
に
と
を交換してください= "multipart/form-data" 'をフォームに追加すると、ファイルあなたはアップロードされます保存されます。 – PetarP
MEDIA_URLとMEDIA_ROOTをセットアップしましたか? https://docs.djangoproject.com/en/1.9/topics/http/file-uploads/ –
>フォームにenctype = "multipart/form-data"を追加してください ああ、奇跡!ありがとうございました。私はこれが複数のファイルをアップロードするためだけだと思っています。ありがとう! – pilgrim