django在模板中使用权限
Posted harrytree
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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/
添加文章的权限又出现了
以上是关于django在模板中使用权限的主要内容,如果未能解决你的问题,请参考以下文章
如何在扩展另一个文件的 django 模板中使用带有动态内容的 html 块片段?