【问题标题】:Is there a way of creation sessions in django via class based views after posting data?发布数据后,是否可以通过基于类的视图在 django 中创建会话?
【发布时间】:2021-07-18 22:47:10
【问题描述】:
class CreateCompanyView(CreateView):
    model = Company
    template_name = 'create/company_create.html'
    form_class = CompanyForm
    success_url = '/'

    def post(self, request, *args, **kwargs):
        form = self.form_class(request.POST)
        if form.is_valid():
            instance = form.save(commit=False)
            #section where the session is supposed to be created
            request.session['company'] =instance.pk
            instance.save()
        return redirect("/")

如果有人基于使用基于类的视图有更简单的方法或另一种替代方法,我将不胜感激

【问题讨论】:

    标签: django django-class-based-views django-sessions


    【解决方案1】:

    处理表单的基于类的视图有一个form_valid 方法,该方法在表单有效时运行。由于您想为该特定情况编写一些额外的代码,您应该覆盖该方法而不是post

    class CreateCompanyView(CreateView):
        model = Company
        template_name = 'create/company_create.html'
        form_class = CompanyForm
        success_url = '/'
        
        def form_valid(self, form):
            response = super().form_valid(form)
            self.request.session['company'] = self.object.pk # `form_valid` saves the object to the variable `self.object`
            return response
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-04
      • 1970-01-01
      • 2018-12-09
      • 1970-01-01
      • 2016-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多