全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

解决Django模板无法使用perms变量问题的方法

前言

本文主要给大家介绍了关于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的子类.接受requestcontext_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小时内与您取得联系。