大佬教程收集整理的这篇文章主要介绍了通过html链接删除Django中的对象,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
关于堆栈溢出有一些问题,但我似乎无法找到一个完整的,可行的答案(我正在使用Django 1.7),当我实现它时不会抛出错误.
我已经能够实现一个正常的删除功能,但需要添加一个带有CSRF令牌的POST表单进行验证,并检查删除它的用户是否是创建它的人.我似乎无法弄清楚如何添加这两个.
到目前为止,在我的views.py中:
def delete(request,id): post = Post.objects.filter(pk=id).delete() return httpResponseRedirect(reverse('posts.views.all_posts'))
在urls.py中:
url(r'^delete/(?P<id>\d+)/$','posts.views.delete'),
在html中:
<a href="/delete/{{ post.id }}">delete</a>
这一切都有效,但没有安全性 – 所以请欣赏有关如何添加表单和检查的指导.
DeleteView
仅在POST时删除,并在GET上显示确认页面.
from django.views.generic import deleteView class Postdelete(deleteView): model = Post success_url = reverse_lazy('posts.views.all_posts')
在urls.py中:
url(r'^delete/(?P<pk>\d+)/$',Postdelete.as_view(),name='entry_delete'),
您的表单(不使用确认模板.文档中有一个确认模板示例):
<form action="{% url 'entry_delete' object.pk %}" method="post"> {% csrf_token %} <input type="submit" value="delete" /> </form>
如果您没有使用确认模板,请确保将表单的action属性指向deleteView(this is why).
为了确保用户删除帖子是拥有它的用户,我喜欢使用mixins.假设你的Post模型有一个指向User的created_by外键,你可以写一个mixin,如:
from django.core.exceptions import PermissionDenied class Permissionmixin(object): def get_object(self,*args,**kwargs): obj = super(Permissionmixin,self).get_object(*args,**kwargs) if not obj.created_by == self.request.user: raise PermissionDenied() else: return obj
class Postdelete(Permissionmixin,deleteView): model = Post success_url = reverse_lazy('posts.views.all_posts')
以上是大佬教程为你收集整理的通过html链接删除Django中的对象全部内容,希望文章能够帮你解决通过html链接删除Django中的对象所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。