Каква е най-добрата практика за избягване на многократно изпращане на формуляр и едновременно с това показване на известие за съобщение след изпращане на формуляр?
За да избегна многократно изпращане на формуляр, използвам пренасочване вместо изобразяване
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 %}
Разбира се, ако използвам изобразяване вместо пренасочване, всичко работи добре, но все още имам проблема с „подаване на няколко формуляра“, ако опресня страницата.