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/

添加文章的权限又出现了

原文地址:https://www.cnblogs.com/harryTree/p/11827799.html

时间: 2024-11-12 23:39:55

django在模板中使用权限的相关文章

171.补充-在模板中添加权限控制

在模板中使用权限: 在settings.TEMPLATES.OPTIONS.context_process下,因为添加了django.auth.context_processors.auth上下文处理器,因此,在模板中可以直接通过perms来获取用户的所有权限,示例代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title

python django -4 模板

模板介绍 作为Web框架,Django提供了模板,可以很便利的动态生成HTML 模版系统致力于表达外观,而不是程序逻辑 模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用 模板包含 HTML的静态部分 动态插入内容部分 Django模板语言,简写DTL,定义在django.template包中 由startproject命令生成的settings.py定义关于模板的值: DIRS定义了一个目录列表,模板引擎按列表顺序

Django之模板层

前面学习了Django的下载和基础的操作,掌握了其基本框架,接下来我们来学习Django中的模板语法. 学习任务:知道什么是模板,以及html+模板语法的具体用法 python的模板:HTML代码+模板语法 模版包括在使用时会被值替换掉的 变量,和控制模版逻辑的标签. #原始的视图 def timeHandle(request): import datetime t=datetime.datetime.now() #Django修改后的视图 # 方式1: # return HttpRespons

[Django学习]模板

模板介绍 作为Web框架,Django提供了模板,可以很便利的动态生成HTML 模版系统致力于表达外观,而不是程序逻辑 模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用 模板包含 HTML的静态部分 动态插入内容部分 Django模板语言,简写DTL,定义在django.template包中 由startproject命令生成的settings.py定义关于模板的值: DIRS定义了一个目录列表,模板引擎按列表顺序

Django之模板

Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} 变量名由字母数字和下划线组成. 点(.)在模板语言中有特殊的含义,用来获取对象的相应属性值. 几个例子: view中代码: def template_test(request): l = [11, 22, 33] d = {"name": "alex"} class Person(object): de

Django:模板系统

一,常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 二,常量 {{ 变量名 }} 变量名由字母数字和下划线组成. 点(.)在模板语言中有特殊的含义,用来获取对象的相应属性值. view中代码 def template_test(request): l = [11, 22, 33] d = {"name": "alex"} class Person(object): def __init__(self, na

Django之模板语言

Django之模板语言 一 模板的执行 模板的创建过程,对于模板,其实就是读取模板(其中嵌套着模板的标签),然后将Model中获取的数据插入到模板中,最后将信息返回给用户 def current_datetime(request): now = datetime.datetime.now() html = "<html><body>It is now %s.</body></html>" % now return HttpResponse

Django的模板层

将页面的设计和Python的代码分离开会更干净简洁更容易维护. 我们可以使用 Django的 模板系统 (Template System)来实现这种模式,这就是本章要具体讨论的问题. django的模板:HTML代码+模板语法: def timer(request): import time now_time = time.time() # html = "<html><body>现在时刻:<h1>%s.</h1></body><

7 Django的模板层

你可能已经注意到我们在例子视图中返回文本的方式有点特别. 也就是说,HTML被直接硬编码在 Python代码之中. def current_datetime(request): now = datetime.datetime.now() html = "<html><body>It is now %s.</body></html>" % now return HttpResponse(html) 尽管这种技术便于解释视图是如何工作的,但直