2013-11-02 1 views
0

Я новичок в Django (1.5), и я пытаюсь сделать базовую форму POST. У меня есть TemplateView, который реализует форму (передается в шаблон с использованием get_context_data).Доступ к данным POST за пределами post() в Django 1.5 TemplateView

Если форма по какой-либо причине не сработала (например, ошибка проверки), я хочу снова отобразить форму, содержащую данные, которые пользователь заполнил. Когда это удастся, я хочу перенаправить на страницу успеха (, например только что созданный элемент).

Вот что я сделал до сих пор:

class WriteForm(forms.Form): 
    subject = forms.CharField() 
    text = forms.CharField(widget=forms.Textarea) 
    # some other stuff 

class WriteView(MailboxView): 
    # MailboxView extends TemplateView and defines some context 
    template_name = 'messages/write.html' 
    form_data = None 

    def post(self, request, *args, **kwargs): 
     # treat form data... 
     # lets make things simple and just assume the form fails 
     # I want to do something like that: 
     self.form_data = request.POST 
     # should I return something? 

    def get_context_data(self, **kwargs): 
     context = super(WriteView, self).get_context_data(**kwargs) 
     if self.form_data is None: 
      context['form'] = WriteForm() 
     else: 
      context['form'] = WriteForm(self.form_data) 
     return context 

Спасибо заранее!

+0

Если вы новичок в Django, я предлагаю не использовать классические представления прямо перед тем, как вы почувствуете себя комфортно, используя простые функции просмотра. То, что вы просите, довольно стандартное, поэтому смотреть на простые примеры использования форм должно быть достаточно – yuvi

ответ

0

У Django уже есть FormView, что вы, возможно, сможете использовать. Если вы хотите посмотреть, как это работает, вот code on GitHub.

Если вы хотите написать свой собственный вид вместо использования встроенного представления формы, вам также может быть полезно посмотреть на FormView в Django Vanilla Views, который имеет более простую реализацию.

+0

Большое спасибо, я просматриваю эти страницы, и я вернусь и приму ваш ответ, когда смогу заставить его работать :) – arnaudrg

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