Django FormView не перенаправляет при успешном POST - PullRequest
0 голосов
/ 05 марта 2020

Я сейчас пишу чат-приложение. Для ввода пользовательского ввода я использую форму и, следовательно, форму и пользовательскую форму, следуя документам Django. Мне нужно установить success_url, но я не хочу, чтобы меня перенаправляли на другую страницу при успешном POST, и не хочу, чтобы я перезагрузил страницу чата. Как мне go узнать об этом?

Я прочитал следующее сообщение: Django FormView, возврат без перенаправления , но я не совсем понимаю суть ответа. Должен ли я действительно избегать перенаправления? И если нет, могу ли я достичь этого с JQuery - Ajax? Разве это не конфликтует с Django success_url?

Спасибо за ваши ответы!

1 Ответ

0 голосов
/ 05 марта 2020

После успешной почтовой операции вы можете просто перенаправить URL на URL успеха, например:

success_url = '%s?success=1' % reverse('index_page')
return HttpResponseRedirect(success_url)

и в проверке шаблона html

{% if success == 1 %}
<h3> Data uploaded successfully</h3>
{% endif %}

или

Вы можете использовать django обмен сообщениями и переопределить метод get_success_url, например:

from django.contrib import messages
def get_success_url(self):
    messages.add_message(self.request, messages.INFO, 'form submission success')
    return reverse('index_page'))

и в шаблоне сделать так:

{% if messages %}
<ul class="messages">
    {% for message in messages %}
    <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
    {% endfor %}
</ul>
{% endif %}
...