2015-08-27 1 views
1

Как получить доступ к запросу в form_valid?Доступ к переменной запроса в Django CreateView 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) 

Is self.request.POST так же, как запрос.POST?

+0

Что такое 'неприятности' у Вас есть? 'self.request.POST' в' form_valid' должен работать. – Alasdair

+0

есть запрос.POST такой же как self.request.POST? – tilaprimera

+2

Я угадываю здесь, потому что ваш вопрос очень расплывчатый. Вы передаете 'self.request.POST' свой метод redirect_logic_func, ожидающий' request'; если в этом методе у вас есть строка, такая как 'request.POST', тогда это не удастся; вы, вероятно, захотите передать полный запрос, как этот 'return redirect_logic_func (self.request)' –

ответ

4
  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 

 Смежные вопросы

  • Нет связанных вопросов^_^