目的:私は簡単なブログアプリケーションを構築しています。私の投稿のビュー内には、post_createという1つのビューがあり、投稿要求がない場合に最初にフォームを表示すると仮定しています。フォーム送信時には、ポストリクエストが同じビューに送信され、条件付きでフォームが有効かどうかがチェックされます。フォームデータが有効な場合、リダイレクトは成功メッセージとともにポストに送信されます。リダイレクトが有効でない場合、要求はエラーメッセージとともにorigianl post_createビューに返されます。djangoメッセージがエラーメッセージと成功メッセージを同時に表示しないようにします。
問題:最初に不足しているデータを送信してフォームをテストすると、元のフォームページとエラーメッセージが表示されます。しかし、私はすべての正しいデータでフォームを記入し、私はPostにリダイレクトされます。エラーメッセージと成功メッセージが同時に表示されます。私は成功のメッセージを見なければならない。
VIEWのCODE:保存されたポストの
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)
TEMPLATE:
<!-- 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>