Django 创建视图表单验证警告
Django Create View form validation warnings
我有一个 创建视图 表单,如下所示:
class LineItemCreateView(CreateView):
model = LineItem
fields = ('sku', 'description', 'quantity', 'order', 'status')
def get_form(self, form_class=None):
form = super(LineItemCreateView, self).get_form(form_class)
form.fields['order'].initial = self.kwargs['order_id']
form.fields['description'].widget = forms.Textarea()
return form
urls.py
path('<int:order_id>/add-new-record/',
LineItemCreateView.as_view(), name='lineitem_form'),
和html模板
{% load crispy_forms_tags %}
{% block content %}
<form method="post" novalidate>
{% csrf_token %}
{{ form|crispy }}
<button type="submit" class="btn btn-success" formnovalidate>Save record</button>
</form>
{% endblock %}
当用户第一次加载表单页面时,每个字段都会出现验证警告。此行为导致表单不显示我设置的初始值。但是,如果我刷新 URL,那么一切看起来都应该是这样。
我认为验证消息应该出现在用户点击提交之后,而不是之前。如何删除验证,使其在用户首次打开表单时不显示?
Button click
First load
Desired first load
附加参考:Disable validation when calling form for the first time
您的表单在首次启动时经过验证,因为您使用 POST 请求而不是 GET 请求获取视图。当您 POST 到视图时,您正在为表单提交数据,即使该数据为空。因此,您的表单将绑定到数据,经过验证并包含错误。
您需要使用 GET 请求启动您的视图。确保您视图中的 link 只是一个普通的 link(<a>
标签),而不是提交按钮。
我有一个 创建视图 表单,如下所示:
class LineItemCreateView(CreateView):
model = LineItem
fields = ('sku', 'description', 'quantity', 'order', 'status')
def get_form(self, form_class=None):
form = super(LineItemCreateView, self).get_form(form_class)
form.fields['order'].initial = self.kwargs['order_id']
form.fields['description'].widget = forms.Textarea()
return form
urls.py
path('<int:order_id>/add-new-record/',
LineItemCreateView.as_view(), name='lineitem_form'),
和html模板
{% load crispy_forms_tags %}
{% block content %}
<form method="post" novalidate>
{% csrf_token %}
{{ form|crispy }}
<button type="submit" class="btn btn-success" formnovalidate>Save record</button>
</form>
{% endblock %}
当用户第一次加载表单页面时,每个字段都会出现验证警告。此行为导致表单不显示我设置的初始值。但是,如果我刷新 URL,那么一切看起来都应该是这样。
我认为验证消息应该出现在用户点击提交之后,而不是之前。如何删除验证,使其在用户首次打开表单时不显示?
Button click
First load
Desired first load
附加参考:Disable validation when calling form for the first time
您的表单在首次启动时经过验证,因为您使用 POST 请求而不是 GET 请求获取视图。当您 POST 到视图时,您正在为表单提交数据,即使该数据为空。因此,您的表单将绑定到数据,经过验证并包含错误。
您需要使用 GET 请求启动您的视图。确保您视图中的 link 只是一个普通的 link(<a>
标签),而不是提交按钮。