在 Django CreateView form_valid 方法中访问请求变量

Access request variable in Django CreateView form_valid method

如何访问 form_valid 中的请求?

def redirect_logic_func(request):
   #redirect logic

class CView(CreateView):
    form_class = CForm
    template_name = "c_form.html"

    def form_valid(self, form):
        form.save()
        super(CView, self).form_valid(form)
        return redirect_logic_func(self.request)

self.request.POST和request.POST一样吗?

  1. 要访问 form_valid() 中的 request 变量,您只需使用 self.request。这将为您提供 request 变量。
  2. 不,不需要覆盖 .post() 来访问 form_valid() 中的 request 变量。
  3. 是的,self.request.POSTrequest.POST 相同,因为它们是相同的 request 对象。

因此,您的最终代码应如下所示:

def redirect_logic_func(request):
   #redirect logic

class CView(CreateView):
    form_class = CForm
    template_name = "c_form.html"

    def form_valid(self, form):
        form.save()
        super(CView, self).form_valid(form)
        return redirect_logic_func(self.request) # use self.request