[英]Django form.is_valid returns false when a FileField is set to required
所以我正在嘗試使用 FileField 在 Django 中創建一個表單。
我的 forms.py 看起來像這樣:
from django import forms
class WordcloudForm(forms.Form):
matrix = forms.FileField(required=True)
min = forms.IntegerField(required=False)
max = forms.IntegerField(required=False)
# mask = forms.FileField(required=False)
我希望 FileField 成為必填字段。
意見.py:
def form(request):
if request.method == 'POST':
form = WordcloudForm(request.POST)
print(form.is_valid)
if form.is_valid():
if 'matrix' in request.FILES:
uploaded_matrix = request.FILES['matrix']
print(uploaded_matrix.name, uploaded_matrix.size)
min = form.cleaned_data['min']
max = form.cleaned_data['max']
print('min',min,'max',max)
print(form.errors)
forms.py中forms.FileField(required = True)
時,form.is_valid()返回false:
當forms.FileField(required=False)
在forms.py中,form.is_valid()返回true:
當我提交帶有forms.FileField(required = True)
的表單時,我的print(form.errors)
聲明:“此字段是必需的”,即使我確實添加了一個文件。
我嘗試了不同的文件格式以確保問題不僅僅發生在我用於測試的圖像上。
我錯過了什么?
如文檔中所述,您需要在啟動表單實例時將request.POST
request.FILES
傳遞:
if request.method == 'POST':
form = WordCloudForm(request.POST, request.FILES)
if form.is_valid():
# rest of the code
另外請將您的視圖方法從form
重命名為任何有意義的名稱,因為您在方法中有一個名為form
的變量。 與變量min
和max
的命名相同,它們與 python 的min
和max
函數沖突。 您的 IDE 已經在標記它們了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.