2016-07-08 9 views
1

私の問題で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

+2

my_file = self.request.FILES['docfile'] 

my_file = self.request.FILES['file'] 

を交換してください= "multipart/form-data" 'をフォームに追加すると、ファイルあなたはアップロードされます保存されます。 – PetarP

+0

MEDIA_URLとMEDIA_ROOTをセットアップしましたか? https://docs.djangoproject.com/en/1.9/topics/http/file-uploads/ –

+0

>フォームにenctype = "multipart/form-data"を追加してください ああ、奇跡!ありがとうございました。私はこれが複数のファイルをアップロードするためだけだと思っています。ありがとう! – pilgrim

答えて

1

`のenctypeを追加するには、views.py

+0

ありがとうございます。しかし、私はまだ同じです。それを問題に変更しました。 – pilgrim

関連する問題