2017-07-08 64 views
0

删除我在它里面的链接和按钮删除与该按钮防止硬编码的URL在Django

<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在地址栏中键入,如:

http://127.0.0.1:8000/parts/stock_delete/16/

什么可以这样做吗?

回答

1

你应该真的使用DeleteView

这是一个通用的基于类的视图,当查看时(GET)将显示确认页面,询问您是否确实要删除该记录。当您确认(POST)时,记录将被删除。

@ sasuke的回答没有考虑到另一个大的安全漏洞,CSRF。如果你想确保你的应用程序是安全的,你会想要非常仔细地研究这个页面。

+0

感谢@Kye指出安全漏洞。我已经更新了我的答案。 – badiya

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> 

而在后端,你可以在view.py中的函数中这样写。

# delete view 
.... 
if request.method == 'POST': 
    if 'flag1' in request.POST: 
     ... # deleted your object here