前言

本文主要给大家介绍了关于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
相关文章:
网站制作说明怎么写,简述网页设计的流程并说明原因?
Swift中swift中的switch 语句
无锡营销型网站制作公司,无锡网选车牌流程?
宝塔建站无法访问?如何排查配置与端口问题?
如何在阿里云域名上完成建站全流程?
建站之星北京办公室:智能建站系统与小程序生成方案解析
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
网站设计制作公司地址,网站建设比较好的公司都有哪些?
建站之星会员如何解锁更多建站功能?
建站之星伪静态规则如何设置?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?
如何选择高性价比服务器搭建个人网站?
如何通过IIS搭建网站并配置访问权限?
如何获取免费开源的自助建站系统源码?
建站之星下载版如何获取与安装?
建站主机与服务器功能差异如何区分?
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
c# 在高并发场景下,委托和接口调用的性能对比
广州建站公司哪家好?十大优质服务商推荐
如何正确选择百度移动适配建站域名?
如何用低价快速搭建高质量网站?
建站之星后台管理:高效配置与模板优化提升用户体验
高端建站如何打造兼具美学与转化的品牌官网?
建站10G流量真的够用吗?如何应对访问高峰?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
如何快速生成专业多端适配建站电话?
如何在阿里云购买域名并搭建网站?
定制建站策划方案_专业建站与网站建设方案一站式指南
如何在IIS中新建站点并解决端口绑定冲突?
网页设计与网站制作内容,怎样注册网站?
,怎么用自己头像做动态表情包?
安云自助建站系统如何快速提升SEO排名?
如何高效搭建专业期货交易平台网站?
重庆市网站制作公司,重庆招聘网站哪个好?
建站之星上传入口如何快速找到?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
专业网站制作服务公司,有哪些网站可以免费发布招聘信息?
如何基于云服务器快速搭建网站及云盘系统?
常州企业网站制作公司,全国继续教育网怎么登录?
小型网站建站如何选择虚拟主机?
建站之星多图banner生成与模板自定义指南
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
制作网站公司那家好,网络公司是做什么的?
如何用PHP快速搭建CMS系统?
网站插件制作软件免费下载,网页视频怎么下到本地插件?
已有域名能否直接搭建网站?
Android自定义listview布局实现上拉加载下拉刷新功能
*请认真填写需求信息,我们会在24小时内与您取得联系。