簡體   English   中英

無法檢索復選框 POST 數據,form.is_valid() 返回 false

[英]Cannot Retrieve Checkbox POST Data, form.is_valid() returns false

我是 Django/Python 的初學者,每當我嘗試提交表單時, is_valid()方法都會返回 false。 我嘗試使用form.errors顯示錯誤,但它不返回任何內容或{} 當我嘗試運行以下代碼時:

form.non_field_errors()
field_errors = [(field.label, field.errors) for field in form]

我得到[('', []), ('Required', [])]

表格.py

class ApplicationForm(forms.ModelForm):
email = forms.EmailField(label='', max_length=100, required=True, widget=forms.TextInput(
    attrs={'class': 'form-group form-control input-lg ', 'placeholder': 'Email'}), )
required = forms.ModelMultipleChoiceField(queryset=Requirements.objects.all(), widget=forms.CheckboxSelectMultiple)

class Meta:
    model = Requirements
    fields = ['email', 'required']

視圖.py

def application_form(request):
try:
    form = ApplicationForm()
    context = {'form': form}

    if request.method == 'GET':
        return render(request, 'requirements/job_specs.html', context)
    if request.method == 'POST':
        print(form.is_valid(), form.errors)
        if form.is_valid():
            form.save()
            return JsonResponse({'created': True})
    form.non_field_errors()
    field_errors = [(field.label, field.errors) for field in form]
    print(field_errors)
    return JsonResponse(form.errors.as_json(), safe=False)
except Exception as e:
    print(e)

form = ApplicationForm(request.POST or None)
context = {'form': form}
return render(request, 'requirements/job_specs.html', context)

HTML

<form method="POST" id="application-form">
                {% csrf_token %}

                {{ form }}

                <div class="bg-light row" >
                    <div class="" id="btn-box">
                        <div class="col-md-12 d-grid gap-2 col-6 ">
                            <button type="submit" class="btn btn-primary btn-lg">Save</button>
                        </div>
                    </div>
                </div>

            </form>

我嘗試應用類似帖子的解決方案,例如Django forms 無效Django ZAC68B62ABFD6A8FE26E8AC423有助於解決問題。 任何幫助將不勝感激

在查看代碼幾個小時后,我終於發現了它的問題所在。 我只需要在form = ApplicationForm()中添加request.POST or None ,它就像一個魅力。

暫無
暫無

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

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