我内部有一个链接和按钮,用于删除与按钮相关联的记录
<a href="{% url 'parts:stock_delete' stock.id %}">
<button class="delete" type="submit" name="delete_btn" style="position: absolute; right: 40px;" >Delete</button>
</a>
但是我希望仅在按下按钮时删除记录,而不是在地址栏中输入URL时删除记录,如:
可以为此做些什么?
答案 0 :(得分:1)
您可以使用post
方法。当按下按钮时,您可以传递一些标记,例如flag1
。
<form action="{% url 'parts:stock_delete' stock.id %}" method="post" >
<input type="hidden" name="flag1" value="True" >{% csrf_token %}
<button class="delete" type="submit" name="delete_btn" style="position: absolute; right: 40px;" >Delete</button></a>
</form>
在后端你可以在views.py中的函数中这样写。
# delete view
....
if request.method == 'POST':
if 'flag1' in request.POST:
... # deleted your object here
答案 1 :(得分:1)
你应该真的使用DeleteView!
这是一个基于类的通用视图 - 当查看(GET
)时,将显示一个确认页面,询问您是否确实要删除该记录。确认后(POST
),记录将被删除。
答案 2 :(得分:1)
你可以像Kye所说的那样,通过post使用DeleteView来排除注册表。 CSRF存在一个问题,但Django已经为AJAX请求提供了一种带来令牌的方法。您可以查看文档:{{3}}