2012-02-23 26 views
2

私はこれでかなり徹底的に混乱しています。私は自分のフォームに接続して話すためにどこにいるのか完全にはわかりません。Django + HTMLフォームでファイルをアップロード

class UploadFileForm(forms.Form): 
    title = forms.CharField(max_length=50) 
    file = forms.FileField() 

上記は私のモデルのフォームです。以下はビューです。

<form action="/upload/" enctype="multipart/form-data" method="post"> 
      {% csrf_token %} 
      <p> 
      Please specify a file, or a set of files:<br> 
      <input type="text" name="title" size="30"> 
      <input name="file" type="file" size="40"> 
      </p> 
      <div> 
      <input type="submit" value="Send"> 
      </div> 
     </form> 

私は自分のコードの一部を持っていたが、他のスタックオーバーフローの質問のカップルを見て、私はそれを簡素化文書を熟読した後:ここで

def upload_file(request): 
    if request.method == 'POST': 
     form = UploadFileForm(request.POST, request.FILES) 
     if form.is_valid(): 
      response = "Form is valid" 
     else: 
      response = "Failed to upload" 
    return HttpResponse(response) 

はフォームです。 (モデルとビューの機能はこのスレッドで見つけることができます File upload with Django: Invalid form

私は実際にフォームからサーバーに接続することになっています。私は自分の設定をして、実際にはこれらのファイルが存在するはずのメディアルートが存在するようにしました。フォームの入力タイプが間違っている可能性があります。

アップロードに失敗しましたので、フォームが何らかの形で無効であることを意味しています。私はちょうどこれが正確に一緒に来る方法を本当に知らない。

+0

urls.pyファイルに 'upload'のURLがありますか?ここに紹介します:https://docs.djangoproject.com/ja/dev/intro/tutorial03/#design-your-urls – bernie

+0

はい、あります。/upload/endpointがupload_fileビューに指示します – Wuzseen

+0

レスポンス= "アップロードに失敗しました"の後、form.errorsを印刷して、結果を貼り付けてください。このような貧弱なフォームテンプレートは使用しないでください。エラーをサポートしていないし、投稿された値を再利用することもできません。フォームテンプレートを作成する方法は次のとおりです。https://docs.djangoproject.com/en/dev/topics/forms/#customizing-the-form-template – jpic

答えて

0

モデルがある場合はModelFormを使用してください。オブジェクトを保存するには、ビュー内でform.save()を実行するだけです。

+0

この回答が古くなっているようです。ここに、[ModelForm](https://docs.djangoproject.com/en/1.10/topics/forms/modelforms/)の現在のリンクがあります。 – TheJKFever

関連する問題