1
目標:我正在構建一個簡單的博客應用程序。在我的帖子視圖中,有一個視圖叫做post_create,假設在沒有帖子請求時首先顯示錶單。在表單提交後,請求發送到相同的視圖和條件,然後檢查表單是否有效。如果表單數據有效,則重定向將通過成功消息發送到帖子。如果重定向無效,請求將返回到origianl post_create視圖並顯示錯誤消息。阻止Django消息一次顯示錯誤消息和成功消息
問題:當我第一次通過提交缺失數據測試表單時,我回到原始表單頁面和錯誤信息,這很好。但隨後我填寫了所有正確的數據,並將其重定向到了Post,我同時看到錯誤消息和成功消息。我應該看到成功的消息。
視圖代碼:
def post_create(request):
form = PostForm(request.POST or None)
if form.is_valid() and request.method == 'POST':
instance = form.save(commit=False)
instance.save()
# message success
## TODO GET MESSAGES TO NOT DISPLAY SUCCESS AND FAILURE
messages.add_message(request,messages.SUCCESS, "Logged in Successfully")
return HttpResponseRedirect(instance.get_absolute_url())
elif(request.method == 'POST'):
messages.error(request, "Not Successfully Created")
context = {
"form":form,
}
return render(request,"post_form.html",context)
模板保存後的:
<!-- DOCTYPE html -->
<html>
<body>
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
<h1>{{ post.title}}</h1>
<div>
{{post.content}}</br>
{{post.timestamp}}</br>
{{post.id}}</br>
</div>
</body>
</html>