3 回答
TA贡献1812条经验 获得超5个赞
所以我猜您的第一选择是创建一个用于搜索的表单,然后呈现带有结果的页面。当我们正在讨论如何扩展它时,很高兴看到您如何实现这一目标。
在没有看到您对搜索功能的实现的情况下,我认为一个很好的例子是将搜索从基于表单的搜索转移到查询语言。
但我们不要超前!毕竟,让我们以简单的方式处理表单吧!
假设这是你的表格
from django import forms
class MyForm(forms):
title #
author #
genre #
现在,每次标题、作者、流派选择都会随请求一起发送。那么简单的方法就是向第二个表单添加更多内容并在渲染时将当前状态传递给它!
from django import forms
class SecondForm(forms):
title
author
genre
language # new stuff!
因此,当您在函数处理程序/类视图中获取当前数据时,您可以从 MyForm 数据创建一个新表单 SecondForm,您可以在此处阅读更多信息。
def refine_search(request):
# the form has been submitted so it's a safe assumption to have request.method == 'POSt'
# but this will make it harder to share a link to a search page
# load the search results
# prepare the second form to be rendered on the result page
form = SecondForm(request.POST)
# now your can render your result page passing the form
# and it will be rendered with the state from the previous!
TA贡献1780条经验 获得超1个赞
我不确定您是否想要在扩展过滤器中选择流派?因为如果是的话,我看不到问题......?如果不是,为什么不使用隐藏输入来传递流派呢? forms.CharField(widget=forms.HiddenInput())
添加回答
举报