【发布时间】:2016-05-10 17:31:34
【问题描述】:
我是 Django 的新手。但我需要你的帮助:)
我使用 ListView、FormMixin 类和一个简单的 FormView 创建了一个搜索页面:
class Search(ListView,FormMixin):
template_name = "users/search.html"
form_class = SearchForm
def get_context_data(self,**kwargs):
"""To get results"""
def post(self, request, *args, **kwargs):
return SearchFormView.as_view()(request)
还有
class SearchFormView(FormView):
template_name = 'users/search.html'
form_class = SearchForm
def get_success_url(self):
return reverse_lazy('users:search')
def get_initial(self):
if 'keySearch' in self.request.session:
for k in self.request.session.pop('keySearch'):
initial[k] = self.request.session.pop(k)
return initial
def form_valid(self, form):
print "Form valid"
request = form.cleaned_data
print "Search field {}".format(request)
for k,v in request.iteritems():
self.request.session[k]=v
self.request.session['keySearch']=request.keys()
return super(SearchFormView,self).form_valid(form)
但每次我提交表单时,“搜索”字段都是空白的。我的目标是保持在字段中,用户输入并同时显示关键字和搜索结果。我想我没有很好地使用 get_initial 方法。
此外,我很抱歉这个脏代码。我希望你有解决方案,任何 cmets 都会很棒:)
最好的问候
【问题讨论】:
-
您需要在发送给用户之前预先填写您的空表单。
form_data = {'form_field': 'prefilled_form_field_data'}form = YourForm(initial=form_data)return render(request, "template.html", {'form': form})