Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Создание кнопки, вызывающей серверную логику [RSS Feed]

#1 Март 8, 2018 15:12:44

retyng
Зарегистрирован: 2018-03-08
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание кнопки, вызывающей серверную логику

Здравствуйте. Подскажите, пожалуйста, как сделать кнопку в html, которая выполняет некую логику на сервере?

Поясню на примере: есть страничка - карточка (модель – “сообщение”). Нужно, чтобы была возможность проставить флаг “прочитано”\“не прочитано”.

Шаблон

 {% 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 – кучу всего сложного, но у меня то простой случай, в котором не хочется наворачивать. Помогите победить

Офлайн

  • Начало
  • » Django
  • » Создание кнопки, вызывающей серверную логику[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version