从base.html模板发送POST请求到views.py

时间:2020-07-13 01:39:37

标签: python django

我正在使用django-notifications-hq在网站的顶部导航栏中显示通知,该通知恰好位于基本模板文件base.html中。我在导航栏中有一个小按钮,可以将通知设置为读取,但是我无法将POST请求发送到views.py。有没有一种方法可以从网站上的任何位置将此POST请求发送到views.py中的特定功能?我已经阅读了有关上下文处理器的信息,但这似乎仅在相反的情况下才有用,当您要将数据从视图发送到基本模板文件时。

views.py中的函数我想从base.html发送POST请求到

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

base.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>

希望有一个简单的解决方案。谢谢!

编辑:URLS.py

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

1 个答案:

答案 0 :(得分:1)

要指定要向其提交POST请求的端点/ URL /路径,需要设置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>