2017-10-04 2 views
0

私はファイルをアップロードしようとしているが、そうすることができない、 ビューで私の機能、Djangoのファイルアップロードエラー

def user_in(request): 
if not request.user.is_authenticated: 
return render(request, 'accounts/logout.html') 
else: 
if request.method == 'POST': 
form_new = Fileupload(request.POST, request.FILES) 
if form_new.is_valid(): 
return redirect('in') 
else: 
form_new = Fileupload() 
return render(request, 'accounts/in.html', {'form_new': form_new}) 

私のフォーム、

class Fileupload(forms.Form): 
BrowseFile=forms.FileField() 
class Meta: 
model=User 

と私のテンプレート、

<form action="." method="POST" enctype="multipart/form-data" > 
<h3>Welcome to DropBox<br><br></h3> 
{% csrf_token %} 
{{form_new.as_p}} 
<p><input type="submit" value="Save" ></p> 
<br> 
<a href="{% url 'logout' %}">Logout</a> 
{%else%} 
<p>You must login first</p> 
<a href="{% url 'login' %}">Logout</a> 
{% endif %} 
<br> 
</form> 
ています

送信ボタンを押した後、メディアの場所にドキュメントが表示されません。 何か間違っていることや何か不足していますか?

ありがとうございます。

+0

私はすでにそれは – Patata

答えて

1

model=....class Meta:に使用する場合は、まずforms.Formの代わりにforms.ModelFormを使用する必要があります。

モデルUserはあなたFileupload形式でBrowseFileフィールドを作成する必要はありません、このようなものですので、もし私が...このよう

class Fileupload(forms.ModelForm): 
    class Meta: 
     model=User # I guess BrowseFile field may be FileField() 

を変更します。

class User(...): 
    BrowseFile = models.FileField() 

それでは、さらに行きましょう...あなたのviews

def user_in(request): 
    if not request.user.is_authenticated: 
     return render(request, 'accounts/logout.html') 
    else: 
     if request.method == 'POST': 
      form_new = Fileupload(request.POST, request.FILES) 
      if form_new.is_valid(): 
       return redirect('in') 
     else: 
      form_new = Fileupload() 
     return render(request, 'accounts/in.html', {'form_new': form_new}) 

、あなたはPOST中に持っているものの保存しているものはありません。

ので、今、あなたはあなたのどこかにアップロードフォルダにアップロードされたファイルを参照することができ

def user_in(request): 
    if not request.user.is_authenticated: 
     return render(request, 'accounts/logout.html') 
    else: 
     if request.method == 'POST': 
      form_new = Fileupload(request.POST, request.FILES) 
      if form_new.is_valid(): 
       form.save() # if you want it, you have to use forms.ModelForm 
       return redirect('in') 
     else: 
      form_new = Fileupload() 
     return render(request, 'accounts/in.html', {'form_new': form_new}) 

...のは、それを変更してみましょう。

注:あなたがsettings.pyに設定アップロードファイルの場所(MEDIA_ROOT)とMEDIA_URLする必要があります!

+0

をチェック クラスファイルアップロード(forms.ModelForm): クラスのMeta:あなたのsugeestionに関する モデル=ユーザ#私はあなたのモデルのユーザーがこのようであればBrowseFileフィールドはFileFieldに() かもしれ思い、あなたはBrowseFileフィールドを作成する必要はありませんあなたのFileuploadフォームで。 クラスユーザー(...): BrowseFile = models.FileField() 私はdjango 'user'を使用しましたモデルは –

+0

感謝を設定し、[ドキュメント](https://docs.djangoproject.com/en/1.11/topics/http/file-uploads/) –

+0

本当に便利だったあなたの説明のために、これらの –

関連する問題