繁体   English   中英

mixins Django 如何在 html 模板中启用员工用户发布、编辑、删除权限

[英]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"
      ...

编辑:默认权限如下:

  1. 添加权限: <app label>.add_<lowercase_model_name>
  2. 更改权限: <app label>.change_<lowercase_model_name>
  3. 删除权限: <app label>.delete_<lowercase_model_name>
  4. 查看权限: <app label>.view_<lowercase_model_name>

注意:Class 名称应该是PascalCase而不是snake_case所以它应该是BlogPublishView而不是blog_publish_view等。看看PEP 8 - Python 代码的样式指南

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM