zoukankan      html  css  js  c++  java
  • django在模板中使用权限

    在settings.TEMPLATES.OPTIONS.content_processors下,因为添加了 django.contrib.auth.context_processors.auth上下文处理器。

    因此在模板中可以直接通过perms来获取用户的所有权限, 示例代码如下:

    {%  if perms.front.add_article  % }

      <a href="/article/add/" >添加文章</a>

    {% endif %}

    1、在app01/templates/ index.html里面定义模板

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        首页
        {% if perms.app01.add_article %}
            <a href="#" > 添加文章 </a>
        {% endif %}
    
    </body>
    </html>

    2、在app01/views.py里定义 index视图

    #在模板中使用权限
    def index(request):
        return  render( request, 'index.html')

    3、定义路由

    from django.contrib import admin
    from django.urls import path
    from app01 import views as app01_views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path("test/", app01_views.test),
        path("login/", app01_views.my_login, name = "login"),
        path("logout/", app01_views.my_logout, name = "logout"),
        path("profile/", app01_views.profile, name="profile"),
        path("add_permission/", app01_views.add_permission, name="add_permission" ),
        path("oper_permission/", app01_views.operate_permission, name="oper_permission" ),
        path("add_article/", app01_views.add_article, name="add_article" ),
        path("oper_group", app01_views.operate_group, name="oper_group"),
        path("", app01_views.index, name="index"),
    ]

    4、访问http://127.0.0.1:8080/后效果如下

    说明,用户有add_article权限

     

     

     

     

    5、删除掉 auth_group_permissions里面 19的权限后,再访问http://127.0.0.1:8080/

     

     由于group1没有对应的19权限了,所有页面中不会显示添加文章的权限

    6、直接在app01_user_user_permissions表里,给用户1添加19权限后,再访问http://127.0.0.1:8080/

    添加文章的权限又出现了

     

  • 相关阅读:
    最小生成树之算法记录【prime算法+Kruskal算法】【模板】
    [LC] 90. Subsets II
    [LC] 19. Remove Nth Node From End of List
    [LC] 125. Valid Palindrome
    [LC] 127. Word Ladder
    [LC] 102. Binary Tree Level Order Traversal
    [LC] 5. Longest Palindromic Substring
    [LC] 167. Two Sum II
    [LC] 437. Path Sum III
    [LC] 94. Binary Tree Inorder Traversal
  • 原文地址:https://www.cnblogs.com/harryTree/p/11827799.html
Copyright © 2011-2022 走看看