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

til*_*era 4 python django django-views django-class-based-views

如何在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)
Run Code Online (Sandbox Code Playgroud)

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

Rah*_*pta 10

  1. 要访问request变量form_valid(),您只需要使用self.request.这将为您提供request变量.
  2. 不,没有必要覆盖.post()访问request变量form_valid().
  3. 是的,self.request.POST是一样的request.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
Run Code Online (Sandbox Code Playgroud)