gpt4 book ai didi

django - 初始=不适用于表单输入

转载 作者:行者123 更新时间:2023-12-02 07:25:01 25 4
gpt4 key购买 nike

我的页面上有一个简单的搜索表单/ .

class SearchForm(Form):
query = CharField(max_length=256,
label="Search",
required=False,
widget=TextInput(attrs={'placeholder': 'Search …',
'class': 'form-control'}))

page = IntegerField(min_value=8, initial=1, widget=HiddenInput())
sort = CharField(max_length=16, initial="id", widget=HiddenInput())
order = CharField(max_length=4, initial="asc", widget=HiddenInput())

我的(简化的)观点是这样的:

def search(request):
search_form = SearchForm(request.GET)
return render(request, "search.html", {'search_form': search_form})

我的目标是拥有search_form.cleaned_data['<FIELD>']返回我在类 SearchForm 中设置的初始值,无需检查它们是否存在 None或为空'' .

不幸的是,我的代码不起作用,因为输入元素的渲染方式如下:

<input id="id_page" name="page" type="hidden" />
<input id="id_sort" maxlength="16" name="sort" type="hidden" />
<input id="id_order" maxlength="4" name="order" type="hidden" />

有什么想法吗?

最佳答案

代码无法工作的原因是

search_form = SearchForm(request.GET)

创建绑定(bind)表单。并且绑定(bind)表单没有初始值。

我最终得到了这颗 gem 。它检查 request.GET 是否至少包含一个表单字段(无论值如何,例如 /?page=),然后创建一个可以进行验证的绑定(bind)表单。否则,用户访问了 / 或提交了与表单无关的其他参数(例如 /?foo=bar)。

if request.GET & SearchForm.base_fields.keys():
search_form = SearchForm(request.GET)
else:
...
search_form = SearchForm(initial={...})

关于django - 初始=不适用于表单输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43091200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com