django пренасочване със съобщения

Каква е най-добрата практика за избягване на многократно изпращане на формуляр и едновременно с това показване на известие за съобщение след изпращане на формуляр?

За да избегна многократно изпращане на формуляр, използвам пренасочване вместо изобразяване

return redirect(post.get_absolute_url())

Но ако добавите съобщение и след това пренасочите, няма да се покаже съобщение. Ето настройките на целия изглед:

def post_detail(request, year, month, day, post):
    post = get_object_or_404(Post, slug=post,
                                   status='published',
                                   publish__year=year,
                                   publish__month=month,
                                   publish__day=day)

    # List of active comments for this post
    comments = post.comments.filter(active=True)   

    if request.method == 'POST':
        # A comment was posted
        comment_form = CommentForm(data=request.POST)

        if comment_form.is_valid():
            # Create Comment object but don't save to database yet
            new_comment = comment_form.save(commit=False)
            # Assign the current post to the comment
            new_comment.post = post
            # Save the comment to the database
            new_comment.save()
            messages.success(request, 'Comment successfully added')
            return redirect(post.get_absolute_url())
    else:
        comment_form = CommentForm()

    return render(request, 'blog/post/detail.html', {'post': post,
                                                     'comments': comments,
                                                     'comment_form': comment_form})

Във файла за изглед улавям всички съобщения за отстраняване на грешки

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

Разбира се, ако използвам изобразяване вместо пренасочване, всичко работи добре, но все още имам проблема с „подаване на няколко формуляра“, ако опресня страницата.


person Julien    schedule 03.07.2016    source източник
comment
Точно това е правилното нещо. Може би не използвате RequestContext в изгледа, към който пренасочвате?   -  person Daniel Roseman    schedule 03.07.2016
comment
Всъщност това е същата гледка. Ако използвам рендиране, улавям съобщенията нормално. Но нищо с пренасочване. Съобщенията разчитат на сесии по подразбиране. Ето защо не разбирам защо това не работи   -  person Julien    schedule 03.07.2016
comment
Значи пренасочвате обратно към същия изглед? Можете ли да покажете кода за цялото нещо?   -  person Daniel Roseman    schedule 04.07.2016
comment
Току-що актуализиран, за да ви покаже целия изглед   -  person Julien    schedule 04.07.2016
comment
Не е ли това, което търсиш, Жулиен? Пренасочване на Django с контекст: stackoverflow.com/a/29673951/1757321   -  person KhoPhi    schedule 04.07.2016
comment
да, в известен смисъл това е, което търся. Но предоставеното решение е да се използва рамка за съобщения. И точно това правя. Но по някакви причини с пренасочване не работи   -  person Julien    schedule 04.07.2016
comment
Ако коментирам пренасочването за връщане на линия... Всичко работи добре с рамката на съобщенията. Но след това, ако натисна опресняване, формулярът се изпраща отново... Предполагам, че има начин да се справя с това, но коя е най-добрата практика? Изобразяване на различен изглед и избягване на използването на пренасочване със съобщения?   -  person Julien    schedule 04.07.2016
comment
@Julien Сблъсках се със същия проблем. Намерихте ли решение междувременно?   -  person tbrlpld    schedule 22.05.2019
comment
Всъщност отговорът от @Rexford работи като чар. Поне за мен. Просто не използвам рамката за съобщения, а просто писане и изскачане от сесията.   -  person tbrlpld    schedule 22.05.2019