По какой-то причине django отображает как сообщение об успехе, так и сообщение об ошибке, когда я пытаюсь отобразить сообщения при создании и обновлении формы. Здесь я копирую код, добавляя только создание формы.
Используемое представление:
#function based views
def post_create(request):
form = PostForm(request.POST or None)
# if request.method == "POST":
# # print(request.POST)
# print("title: ", request.POST.get("title"))
# print("content: ",request.POST.get("content"))
if form.is_valid():
instance=form.save(commit=False)
print(form.cleaned_data.get("title"))
instance.save()
#a success message
messages.success(request, "Successfully Created")
return HttpResponseRedirect(instance.get_absolute_url())
else:
messages.error(request, "Post Not Created")
context= {
"form":form
}
return render(request, "post_form.html",context)
, а модель Post
также очень проста:
class Post(models.Model):
title = models.CharField(max_length=120)#;
content = models.TextField()#:
updated = models.DateTimeField(auto_now = True, auto_now_add=False)#; save and update everytime change is done
timestamp = models.DateTimeField(auto_now = False, auto_now_add = True)#; auto_now_add = save and set one time
def __unicode__(self):
return self.title
#python3
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse("posts:detail", kwargs={"id":self.id})
шаблон формы:
<html>
<head><title>new page</title></head>
<body>
<h1>Form</h1>
<form method="POST" action="">
{{ form.as_p }}{% csrf_token %}
<input type="submit" value="Create Post"/>
</form>
</body>
</html>
и страница, на которой отображается сообщение:
<!DOCTYPE HTML>
<html>
<head>
<title>
index.html
</title>
</head>
<body>
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li {% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
<h1><b>TITLE: </b>{{ title }}</h1>
<hr/>
{{ instance.title }} <br/>
{{ instance.content }}<br/>
{{ instance.updated }}<br/>
{{ instance.timestamp }}<br/>
Template is working!!
</body>
</html>
Теперь я не знаю почему, но по какой-то причине я создаю форму, и данные действительны:
Форма создается правильно, страница перенаправляется правильно, но отображаемые сообщения совершенно неверны. Я имею в виду, почему сообщения об успехе и неудаче отображаются одновременно:![enter image description here](https://i.stack.imgur.com/GJp5j.png)
в чем здесь проблема и как мне ее решить?