解决Django模板无法使用perms变量问题的方法
发布时间 - 2026-01-11 03:11:10 点击率:次前言

本文主要给大家介绍了关于Django模板无法使用perms变量的解决方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
解决方法:
首先,在使用Django内置权限管理系统时,settings.py文件要添加
INSTALLED_APPS添加:
'django.contrib.auth',
MIDDLEWARE添加:
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.context_processors.auth',
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.i18n',
'django.template.context_processors.media',
'django.template.context_processors.static',
'django.template.context_processors.tz',
'django.contrib.messages.context_processors.messages',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
],
},
},
]
如何在模板进行权限检查呢?
根据官网说明 https://docs.djangoproject.com/en/1.11/topics/auth/default/#permissions ,已登录用户权限保存在模板{{ perms }}变量中,是权限模板代理django.contrib.auth.context_processors.PermWrapper的一个实例,具体可以查看django/contrib/auth/context_processors.py源码
测试用例:
测试过程中,发现{{ perms }}变量压根不存在,没有任何输出;好吧,只能取Debug Django的源码了
def auth(request):
"""
Returns context variables required by apps that use Django's authentication
system.
If there is no 'user' attribute in the request, uses AnonymousUser (from
django.contrib.auth).
"""
if hasattr(request, 'user'):
user = request.user
else:
from django.contrib.auth.models import AnonymousUser
user = AnonymousUser()
print(user, PermWrapper(user), '-----------------------')
return {
'user': user,
'perms': PermWrapper(user),
}
测试访问接口,发现有的接口有打印权限信息,有的没有,似乎恍然醒悟
可以打印权限信息的接口返回:
return render(request, 'fms/fms_add.html', {'request': request, 'form': form, 'error': error})
不能打印权限新的接口返回:
return render_to_response( 'fms/fms.html', data)
render和render_to_response区别
render是比render_to_reponse更便捷渲染模板的方法,会自动使用RequestContext,而后者需要手动添加:
return render_to_response(request, 'fms/fms_add.html', {'request': request, 'form': form, 'error': error},context_instance=RequestContext(request))
其中RequestContext是django.template.Context的子类.接受request和context_processors ,从而将上下文填充渲染到模板问题已经很明确,由于使用了render_to_response方法,没有手动添加context_instance=RequestContext(request)导致模板不能使用{{ perms }}变量
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
# django
# 模板变量
# 模板
# 变量赋值
# 模板设置变量
# Django模板变量如何传递给外部js调用的方法小结
# Django框架模板注入操作示例【变量传递到模板】
# Django框架模板语言实例小结【变量
# 标签
# 过滤器
# 继承
# html转义】
# python Django模板的使用方法(图文)
# 在Django框架中自定义模板过滤器的方法
# Python的Django框架中模板碎片缓存简介
# python Django模板的使用方法
# 详解在Python的Django框架中创建模板库的方法
# django框架模板中定义变量(set variable in django template)的方
# 解决方法
# 子类
# 管理系统
# 说了
# 没有任何
# 不多
# 有一定
# 给大家
# 不存在
# 好吧
# 这篇文章
# 谢谢大家
# 官网
# 而将
# 可以查看
# 过程中
# 使用了
# 如何在
# 有疑问
# DIRS
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
JS弹性运动实现方法分析
详解Android图表 MPAndroidChart折线图
实现点击下箭头变上箭头来回切换的两种方法【推荐】
Laravel如何实现模型的全局作用域?(Global Scope示例)
EditPlus中的正则表达式实战(5)
LinuxShell函数封装方法_脚本复用设计思路【教程】
Laravel怎么连接多个数据库_Laravel多数据库连接配置
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
Python文件异常处理策略_健壮性说明【指导】
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】
Laravel如何实现数据库事务?(DB Facade示例)
Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程
JavaScript如何实现错误处理_try...catch如何捕获异常?
香港服务器选型指南:免备案配置与高效建站方案解析
如何在Windows服务器上快速搭建网站?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
Laravel如何使用Blade组件和插槽?(Component代码示例)
Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】
如何快速查询域名建站关键信息?
Laravel如何使用Service Container和依赖注入?(代码示例)
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
网易LOFTER官网链接 老福特网页版登录地址
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
怎么用AI帮你设计一套个性化的手机App图标?
如何确认建站备案号应放置的具体位置?
创业网站制作流程,创业网站可靠吗?
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
Laravel如何实现用户注册和登录?(Auth脚手架指南)
uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
Laravel如何处理异常和错误?(Handler示例)
如何在Ubuntu系统下快速搭建WordPress个人网站?
Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程
如何在宝塔面板中修改默认建站目录?
Laravel如何实现事件和监听器?(Event & Listener实战)
如何用低价快速搭建高质量网站?
node.js报错:Cannot find module 'ejs'的解决办法
laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法
JavaScript数据类型有哪些_如何准确判断一个变量的类型
千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】
php json中文编码为null的解决办法
Laravel项目怎么部署到Linux_Laravel Nginx配置详解
如何在IIS7上新建站点并设置安全权限?
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】
如何在万网开始建站?分步指南解析
成都网站制作公司哪家好,四川省职工服务网是做什么用?
Laravel如何配置和使用缓存?(Redis代码示例)

