簡體   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