Как я могу подтвердить, что форма была отправлена ​​с django? - PullRequest
1 голос
/ 11 ноября 2011

Я отправляю форму и вместо перенаправления на URL-адрес успеха я хотел бы просто показать «Форма была отправлена» в тексте на странице, когда форма была отправлена. Кто-нибудь знает, как я могу это сделать?

Ответы [ 3 ]

3 голосов
/ 11 ноября 2011

По вашему мнению:

if request.POST:
    # validate form, do what you need
    if form_is_valid():
        message = 'Form has been submitted'
        return render_to_response('path/to/template.html', {'message': message})

А затем используйте код в вашем шаблоне, например:

{% if message %}
    <h4>{{ message }}</h4>
{% endif %}
0 голосов
/ 11 ноября 2011

Измените представление, чтобы оно возвращало объект HttpResponse с текстом, который вы хотите использовать в качестве его параметра, после проверки запроса. Смотрите пример ниже.

from django.http import HttpResponse

def contact(request):
    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
            # ...
            return HttpResponse('Form has been submitted.')
0 голосов
/ 11 ноября 2011

Честно говоря, это не проблема, связанная с Django.Проблема заключается в том, выполняете ли вы обычную отправку формы или используете AJAX.

Основная идея состоит в том, чтобы отправить POST на конечную точку отправки формы, используя AJAX и данные формы, а в представлении Django просто обновите свои модели ивернуть либо пустой ответ 200, либо некоторые данные (в формате XML, JSON, небольшого HTML, все, что вам нужно).Затем вызов AJAX может заполнить сообщение об успехе div в случае успеха или отобразить сообщение об ошибке, если он возвращает ответ не-200.

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