簡體   English   中英

Django 當 FileField 設置為必需時,form.is_valid 返回 false

[英]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的變量。 與變量minmax的命名相同,它們與 python 的minmax函數沖突。 您的 IDE 已經在標記它們了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM