Как восстановить поля формы в случае перезагрузки экранной формы пользователем (через F5 или по кнопке браузера)
Собственно вот пример, того что я делаю. Это некий условный блог
Код функции из views.pydef post(request):
if request.method=="POST":
title = request.POST.get("title")
text = request.POST.get("text")
author = request.POST.get("author")
if title and text and author:
setpub(title=title,
date=datetime.now().strftime("%d.%m.%Y %H:%M:%S"),
author=author,
text=text)
return redirect("/mytestblog/publication/")
else:
msg={"error1":"Необходимо указать заголовок и текст публикации",
"error2":"Необходимо указать автора публикации",
"title": title,
"author": author,
"datetime":datetime.now().strftime("%d.%m.%Y %H:%M:%S"),
"text": text}
if title and text:
del msg["error1"]
if author:
del msg["error2"]
return render(request, 'post.html',
msg)
return render(request, 'post.html', {
"datetime":datetime.now().strftime("%d.%m.%Y %H:%M:%S")
})
Код шаблона{% extends "base.html" %}
{% block title %}Добавить публикацию{% endblock %}
{% block сontent %}
<h1>Добавить новую публикацию</h1>
<p><b><font color="red">{{ error1 }}</font></b></p>
<form action="/mytestblog/post/" method="post">
{% csrf_token %}
<input style="width: 50%" type="text" name="title" value="{{ title }}" placeholder="Название публикации"/><br /><br />
<textarea style="width: 50%; height: 200px; resize: none"
name="text" placeholder="Текст публикации">{{ text }}</textarea><br />
<p><b><font color="red">{{ error2 }}</font></b></p>
<input style="width: 20%" type="text" name="author" value="{{ author }}" placeholder="Автор публикации"/><br />
<p>{{ datetime }}</p>
<button>Опубликовать</button><br />
</form>
{% endblock %}
В примере хорошо видно как форма и функция из вьюхи обмениваются данными. Если страницу вызвали из меню, то идет базовый рендер. Если отправлена форма, то дальше идет отлов POST сообщения и либо сохранение либо возврат данных обратно в шаблон. Подскажите как сделать задуманное аналогично? Какой тип сообщения уходит на сервер при перезагрузке и реально ли это вообще отловить? Сильно не пинайте, только начал изучать джанго
Вопрос №2. Со звездочкой. В base.html есть ссылка на страницу "Добавить публикацию". Как попытаться сделать тоже самое, если пользователь нажал на эту ссылку, находясь на странице "Добавить публикацию" и игнорить этот кейс в противном случае?