Поясню на примере: есть страничка - карточка (модель – “сообщение”). Нужно, чтобы была возможность проставить флаг “прочитано”\“не прочитано”.
Шаблон
{% block content %} <p class="text-muted">Id:{{ message.id }}</p> <p>Текст:{{ message.text }}</p> <p>Прочитано?:{{ message.isRead }}</p> <p><a href="{% url 'unread-msg' message.id %}">Сделать непрочитанным</a></p> {% endblock %}
urls
urlpatterns = [ ... url(r'^message/(?P<pk>[-\w]+)/unread/$', views.unread_msg, name='unread-msg'), ]
views
def unread_msg(request, pk): msg = get_object_or_404(SpaceMessage, pk = pk) msg.isRead = False return redirect('spacemessage-detail', pk = pk)
И вроде бы худо-бедно работает, но, во-первых, чую, что неоптимально (как минимум, не хочется иметь по урлу на каждую дергаемую функцию), а, во-вторых, хотелось бы сделать не через ссылку, а через кнопку. Что-то типа такого:
{% block content %} <p class="text-muted">Id:{{ message.id }}</p> <p>Текст:{{ message.text }}</p> <p>Прочитано?:{{ message.isRead }}</p> <form action="" method="POST"> {% csrf_token %} <input type="submit" action="" value="Сделать непрочитанным" /> </form> {% endblock %}
но как передавать параметры, и что вызывать – не могу понять. Вроде бы нужно создавать форму ( https://djbook.ru/rel1.7/topics/forms/index.html ) , в которой реализовывать валидацию, проверку на get\post – кучу всего сложного, но у меня то простой случай, в котором не хочется наворачивать. Помогите победить