我正在使用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'),
答案 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>