ЦЕЛЬ: Я создаю простое приложение для блога. В моих сообщениях есть один вид, называемый post_create, который должен сначала открыть форму, если нет почтового запроса. По форме отправьте запрос на отправку в тот же самый вид, и условное выражение затем проверяет, является ли форма действительной или нет. Если данные формы действительны, перенаправление отправляется на сообщение с сообщением об успешном завершении. Если перенаправление недействительно, запрос отправляется обратно в представление origianl post_create с сообщением об ошибке.остановка сообщений django из сообщения об ошибке и сообщения об успешном завершении сразу
ВОПРОС: Когда я впервые тестирую форму, отправив отсутствующие данные, я получаю обратную ссылку на исходную страницу формы и сообщение об ошибке, что хорошо. Но затем я заполняю форму со всеми правильными данными, и я перенаправляюсь на сообщение. Я вижу сообщение об ошибке и сообщение об успешном завершении одновременно. Я должен просто увидеть сообщение об успехе.
VIEW КОД:
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>