Отправить POST-запрос в views.py из шаблона base. html - PullRequest
0 голосов
/ 13 июля 2020

Я использую django -notifications-hq для отображения уведомлений на верхней панели навигации веб-сайта, которая находится в файле базового шаблона base. html. У меня есть небольшая кнопка на панели навигации, чтобы настроить уведомления для чтения, но у меня возникают проблемы с отправкой запроса POST в views.py. Есть ли способ отправить этот запрос POST из любого места на веб-сайте в определенную функцию c в views.py? Я читал о процессорах контекста, но это, кажется, помогает только в противоположном сценарии ios, когда вы хотите отправлять данные из представлений в файл базового шаблона.

Функция в views.py Я хочу отправить POST запрос из базы. html:

def mark_all_as_read(request):
    request.user.notifications.mark_all_as_read()


    return redirect('home') #ideally, just refresh the page the user is on but I can't figure that out either

база. html форма Я хочу отправить запрос из:

<ul class="dropdown-grid-menu" id="notice-link">
                    <a href="{% url 'messages' %}">
                      {% live_notify_list %}
                    </a>
                    <li>
                      <form method='POST'>
                      {% csrf_token %}
                      <br /><button class="btn btn-sm btn-primary" href="{% url 'mark_all_as_read' %}" type="submit" role="button">Mark Read</button>
                      </form>
                    </li>
                  </ul>

Надеюсь, что найдется простое решение. Спасибо!

EDIT: URLS.py

path('mark_all_as_read', views.mark_all_as_read, name='mark_all_as_read'),

1 Ответ

1 голос
/ 13 июля 2020

Чтобы указать конечную точку / url / путь, по которому вы хотите отправить запрос POST, вам необходимо установить атрибут action тега form

<form method="POST" action="{% url 'mark_all_as_read' %}">
    {% csrf_token %}
    <br />
    <input type="submit" class="btn btn-sm btn-primary" role="button">Mark Read</button>
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...