【问题标题】:Django update field value after submit提交后Django更新字段值
【发布时间】: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})

标签: python django formview


【解决方案1】:

您需要在渲染模板时分配表单值并再次发送它们,如果有用可以这样尝试:

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,

                                                    }) 

【讨论】:

    猜你喜欢
    • 2018-04-29
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 2014-10-17
    • 2016-08-01
    • 2015-04-13
    相关资源
    最近更新 更多