2016-05-10 6 views
0

Я новичок здесь и в Django. Но мне нужна ваша помощь :)Значение поля обновления 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 в хорошем смысле.

Кроме того, извините за этот грязный код. Я надеюсь, что у вас есть решение, и любые комментарии было бы здорово :)

С наилучшими пожеланиями

+0

Перед отправкой пользователю необходимо заполнить пустую форму. 'form_data = {'form_field': 'prefilled_form_field_data'}' 'form = YourForm (initial = form_data)' 'return render (request," template.html ", {'form': form})' – rwx

ответ

0

Вам необходимо присвоить значения формы и отправить их еще раз, когда вы предоставляете шаблон, мог бы попробовать это так, если это полезно:

class SearchFormView(View): 
    template_name='users/search.html' 

    def get(self, request, *args, **kwargs): 
     valid_form = yourForm() 
     return render(request, self.template_name,{ 
                "valid_form" : valid_form, 

                })