[英]Django how to restrict staff-user to edit or delete others staff-user post from django admin panel
[英]mixins Django how to enable staff-user post, edit, delete permission in html template
我在视图中使用mixins来限制未经身份验证的用户访问我的博客文章页面、编辑页面和删除页面。 现在只有管理员用户可以访问这些页面,但我也授予员工用户访问这些页面的权限。 看图片:
现在我的员工用户在尝试访问这些页面时仍然收到 404 错误。 这是我的代码:
#views.py
class blog_publish_view(PermissionRequiredMixin,CreateView):
raise_exception = True
permission_required = "blog_add_blog"
model = Post
form_class = BlogPost
template_name = "blog_post.html"
#fields = ['title','author','body']
class blog_update_view(PermissionRequiredMixin,UpdateView):
raise_exception = True
permission_required = "blog_change_blog"
model = Post
template_name = "blog_update_post.html"
form_class = BlogPost
class blog_delete_view(PermissionRequiredMixin,DeleteView):
raise_exception = True
permission_required = "blog_delete_blog"
model = Post
template_name = "delete_blog_post.html"
success_url = reverse_lazy('blog')
#my html 用于发布博客的页面:
{% if user.is_authenticated %}
<div class="container">
<h1>Publish Blog</h1>
<form method="POST">
{% csrf_token %}
{{form.media}}
{{form.as_p}}
<button class="btn btn-info">Publish</button>
</form>
</div>
{% endif %}
我的员工用户可以从 django 管理面板发布、编辑、发布博客,但如何在 html 模板中启用这些权限。
您错误地指定了permission_required
属性。 权限名称为<app label>.<permission codename>
的形式,其中默认的权限代码名称为<action>_<model_name>
的形式。 所以你的观点是:
class blog_publish_view(PermissionRequiredMixin,CreateView):
...
permission_required = "blog.add_post"
...
class blog_update_view(PermissionRequiredMixin,UpdateView):
...
permission_required = "blog.change_post"
...
class blog_delete_view(PermissionRequiredMixin,DeleteView):
...
permission_required = "blog.delete_post"
...
编辑:默认权限如下:
<app label>.add_<lowercase_model_name>
<app label>.change_<lowercase_model_name>
<app label>.delete_<lowercase_model_name>
<app label>.view_<lowercase_model_name>
注意:Class 名称应该是
PascalCase
而不是所以它应该是snake_case
BlogPublishView
而不是等。看看PEP 8 - Python 代码的样式指南blog_publish_view
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.