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'>
添加回答
舉報