2 回答
TA贡献1836条经验 获得超5个赞
我发现了一个笨拙的解决方案,可以创建表单的新实例,而不是更新属性initial
# views.py
...
class SearchView(TemplateView):
"""Search view"""
extra_context = {'form': SearchBar()}
def get_context_data(self. **kwargs):
context = super().get_context(**kwargs)
user_query = self.request.GET.get('q', None)
if user_query is not None:
context['form'] = self.form_class(data={'user_query': user_query})
return context
...
TA贡献1860条经验 获得超9个赞
我不认为你得到任何值与,因为输入字段的名称在表单中。所以试试这个:self.request.GET.get('q', None)user_query
class SearchView(TemplateView):
"""Search view"""
def get_context_data(self. **kwargs):
context = super().get_context(**kwargs)
user_query = self.request.GET.get('user_query', None)
context['form'] = SearchBar(initial = {'user_query': user_query})
return context
同时将表单方法从 post 更改为 get ie<form method='get' action='/search'>
添加回答
举报