2016-08-07 14 views
0

以前はこの問題を抱えていた人はほとんどいませんでしたが、すべてファイル関連でした。私にとっては、人々が提案したすべてのことをやっているうちに、私が入力したテキストフィールドでも "このフィールドは必須です"というエラーが返されます。私のコードを見て:Djangoは "このフィールドは必須です"と書かれていますが(テキストフィールドも)

ビュー

class MainForm(forms.Form): 
    name = forms.CharField() 
    subject = forms.CharField() 
    text = forms.CharField(widget=forms.Textarea) 
    file = forms.FileField() 
    password = forms.CharField() 

def mainpage(request): 
    if request.method == 'POST': 
     form = MainForm(request.FILES or None, request.POST or None) 
     if form.is_valid(): 
      handle_uploaded_file(request.FILES['file']) 
      return HttpResponse('Ok') 


    else: 
     form = MainForm() 
    return render(request, "main.html", {'form': form}) 

def handle_uploaded_file(file): 
    name = file.name 

    with open(os.path.join("static\img", "{0}".format(name)), 'wb+') as destination: 
     for chunk in file.chunks(): 
      destination.write(chunk) 

テンプレート:

{% load staticfiles %} 
<!DOCTYPE html> 
<html lang="en" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html"> 
<head> 
    <meta charset="UTF-8"> 
    <title>{{ siteTitle }}</title> 
    <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}css/main.css"> 
</head> 
<body> 
{% include 'header.html' %} 

<form enctype="multipart/form-data" method="post"> 
    {% csrf_token %} 
    <table> 
    <ul> 
     {{ form.as_table }} 
    </ul> 

    </table> 
    <input type="submit" value="Submit" /> 
</form> 


</body> 
</html> 

私が非必要にすべてを設定すると、それだけを返すことに留意すべきです空の形。

あなたの寛大な助けをありがとう。

+0

ようこそ!表示したい[動作を示すことと無関係なものをすべて削除する](https://stackoverflow.com/help/mcve)を使用して、この例を簡単にしてください。逆に、あなたの例を実行するときにどのような行動が予想されるかを明示してください。 – bignose

答えて

2

フォームの引数の順序が間違っている - request.POSTが最初に来る必要があります。

# request.POST must come before request.FILES. 
form = MainForm(request.POST, request.FILES) 

また、あなたがor Noneは必要ありません。 POSTおよびFILESは、空の場合でも常にrequest objectに存在します。

あなたは、おそらくも表に、これらのulのタグを望んでいない:

<table> 
    {{ form.as_table }} 
</table> 
+0

ありがとうございました。 – Chubak

関連する問題