django - повторно отображать форму после обратной передачи, но как несвязанную - PullRequest
0 голосов
/ 01 ноября 2011

Все еще плохо знаком с python и django, хотя учусь; -)

У меня есть представление, предназначенное для отображения формы с контактной информацией.После успешной обработки формы и сохранения / создания объекта я хочу снова отобразить то же представление (чтобы добавить другой контакт), но с добавленным сообщением о том, что предыдущая контактная информация была успешно сохранена.

С Django return redirect () с параметрами Я узнал, что способ перенаправления в представление с переданным параметром - просто снова вызвать представление и отобразить ответ.

Мое представление начинается следующим образом:

def addabentry(request, entrytype, messages=[]):
""" Presents form to create a company listing, then enters company into database"""

После обратной передачи и успешного сохранения данных я снова вызываю представление следующим образом:

messages = ["%s %s has been added." % (entrytype, entry.name)]
response = addabentry(request, entrytype=entrytype, messages=messages)
return HttpResponse(response)

Однако форма на втором цикле, кажется, связана с предыдущими данными, предположительно потому, что параметр POST все еще находится в объекте запроса, который я передаю представлению.

Есть ли способ отменить привязку формы во второй раз?Или, как более вероятно, есть лучший способ сделать то, что я хочу?Нужно ли мне использовать request.sessions, как указано в упомянутом вопросе SO?

Спасибо за вашу помощь!

W.

Ответы [ 2 ]

1 голос
/ 01 ноября 2011

Я думаю, вы можете сделать вещи намного сложнее, чем нужно.

из базового примера формы в документах

def contact(request):
    message = ''
    if request.method == 'POST': # If the form has been submitted...
        form = ContactForm(request.POST) # A form bound to the POST data
        if form.is_valid(): # All validation rules pass
            # Process the data in form.cleaned_data
            # ...
            # instead of redirecting here, create a new blank form, and add a message
            form = ContactForm()
            message = "contact successfully created"
    else:
        form = ContactForm() # An unbound form

    return render_to_response('contact.html', {
        'form': form,
        'message': message,
    })
1 голос
/ 01 ноября 2011

Вам нужно сообщений рамки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...