利用django-suit模板添加自定义的菜单、页面及设置访问权限


Posted in Python onJuly 13, 2018

前言

本文主要给大家介绍了利用django-suit模板在管理后台添加自定义的菜单和自定义的页面、设置访问权限的相关内容,分享出来供大家参考学习,下面话不多说了,来随着小编一起看看详细的介绍吧

 方法如下:

1、先在settings.py里面的SUIT_CONFIG中添加配置,我们平时添加的配置都是app类型的,我们需要自定义页面的话,就不能用app了,需要用url,这里面我们使用如下:

# django-suit config
SUIT_CONFIG = {
 'ADMIN_NAME': 'X·X',
 'HEADER_DATE_FORMAT': '',
 'HEADER_TIME_FORMAT': 'H:i',
 'SHOW_REQUIRED_ASTERISK': True,
 'CONFIRM_UNSAVED_CHANGES': True,
 'LIST_PER_PAGE': 20,
 'MENU_OPEN_FIRST_CHILD': True,
 'MENU': (
  # sites是默认原先的app和models
  # 'sites',
  '-',
  {'app': 'auth', 'label': u'权限管理', 'icon': 'icon-lock'},
  '-',
  {'app': 'duser', 'label': u'平台用户', 'icon': 'icon-user'},
  '-',
  {'app': 'dtheme', 'label': u'主题管理', 'icon': 'icon-tags'},
  '-',
  {'app': 'dpost', 'label': u'文章管理', 'icon': 'icon-edit'},
  '-',
  # 如果使用http这种绝对路径的话,菜单不会展开,且不会标记为active状态
  {'url': '/admin/theme/mysql', 'label': u'第三数据', 'icon': 'icon-lock'},
  '-',
  {'label': u'统计数据', 'icon': 'icon-tags', 'models': (
   {'url': '/admin/theme/data', 'label': u'第一数据'},
   {'url': '/admin/theme/show', 'label': u'第二数据'}
  )}
 )
}

2、然后就是在urls.py里面添加路由,这个路由一定要添加在admin.site.urls的前面,因为不然的话,它会先去admin.site.urls里面去匹配,造成混乱或报错。

from dtheme import views

urlpatterns = [
 # 第一个就是我们自己新增的url路径
 url(r'^admin/theme/data', views.data),
 url(r'^admin/', admin.site.urls),
 url(r'^api/user/', include('duser.urls')),
 url(r'^api/post/', include('dpost.urls')),
 url(r'^api/theme/', include('dtheme.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

3、然后,就是写views了,我们假如dtheme模块的views里面写:

def data(request):
 return render(request, "data.html")

4、请注意,之所以我们上面可以直接用data.html,是因为我们在dtheme模块下面创建了一个templates文件夹,然后把data.html放在里面了,它会扫描这个文件夹找模板。那么这个模板写成什么样呢?我们就随意写了一个东西。这里面需要注意的是,我们需要继承base_site.html,不然那些header和footer,还有左边的菜单什么的都没有了,相当于谁也不继承。内容就写在content里面即可。

{% extends "admin/base_site.html" %}

{% block content %}
hello, new page.
{% endblock %}

5、OVER。

6、回来,还没完。这个时候如果我们从后台注销,然后直接在浏览器中输入http://127.0.0.1:8000/admin/theme/data的话,发现还是可以直接访问到这个页面,输入管理后台的其他页面它就会要求你验证。所以说我们自定义的这个页面还是十分危险的,其他人知道网址后就可以直接访问它了,我们的想法其实也很简单啊,我们也不想搞特殊,在安全这方面,只要求和其他后台的页面一样就行了:即用户在访问这些后台页面的时候要做一个用户验证,如果用户已经登录了,就可以访问,没登录没通过验证的话,就不能访问,直接跳转到登录页面。这个需要我们再view里面做设置。

from django.contrib.admin.views.decorators import staff_member_required

def data(request):
 return render(request, "data.html")

data = staff_member_required(data)

看到上面的变化了没有?就是我们引入了一个staff_member_required模块,这个模块就是用来验证是否是内部人员(也就是是否登录)用的。当然我们要把我们的view函数放在它里面。这样就OK了。

7、这里面还有一个如何把自定义页面加入到auth里面的坑,待研究完再回来补充。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python中实现字符串类型与字典类型相互转换的方法
Aug 18 Python
Python多进程分块读取超大文件的方法
Apr 13 Python
python读取oracle函数返回值
Jul 18 Python
怎样使用Python脚本日志功能
Aug 14 Python
利用Python爬取可用的代理IP
Aug 18 Python
基于Django的python验证码(实例讲解)
Oct 23 Python
100行Python代码实现自动抢火车票(附源码)
Jan 11 Python
Python利用全连接神经网络求解MNIST问题详解
Jan 14 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
Feb 12 Python
Django实现将一个字典传到前端显示出来
Apr 03 Python
numpy中生成随机数的几种常用函数(小结)
Aug 18 Python
python中entry用法讲解
Dec 04 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
Jul 13 #Python
python实战教程之自动扫雷
Jul 13 #Python
详解Python3.6的py文件打包生成exe
Jul 13 #Python
python2 与 python3 实现共存的方法
Jul 12 #Python
Python3单行定义多个变量或赋值方法
Jul 12 #Python
Python读取数据集并消除数据中的空行方法
Jul 12 #Python
Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
Jul 12 #Python
You might like
Netflix将与CLAMP、乙一以及冲方丁等6名知名制作人合伙展开原创动画计划!
2020/03/06 日漫
php 读取文件乱码问题
2010/02/20 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
2014/09/27 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
2015/12/22 PHP
php 如何设置一个严格控制过期时间的session
2017/05/05 PHP
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
2010/10/26 Javascript
基于jQuery实现的图片切换焦点图整理
2014/12/07 Javascript
Javascript数据结构与算法之列表详解
2015/03/12 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
JavaScript实现非常简单实用的下拉菜单效果
2015/08/27 Javascript
JavaScript中的this使用详解
2016/07/27 Javascript
微信小程序实现保存图片到相册功能
2018/11/30 Javascript
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
利用Python中的mock库对Python代码进行模拟测试
2015/04/16 Python
Python实现简单的语音识别系统
2017/12/13 Python
Python机器学习之决策树算法
2017/12/22 Python
python2.x实现人民币转大写人民币
2018/06/20 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
2019/07/22 Python
python继承threading.Thread实现有返回值的子类实例
2020/05/02 Python
keras.utils.to_categorical和one hot格式解析
2020/07/02 Python
Python-openCV开运算实例
2020/07/05 Python
pytorch随机采样操作SubsetRandomSampler()
2020/07/07 Python
基于HTML5的齿轮动画特效
2016/02/29 HTML / CSS
Free People中国官网:波西米亚风格女装服饰
2016/08/30 全球购物
美国女性卫生用品公司:Thinx
2017/06/30 全球购物
世界上最大的在线汽车租赁预订平台:Rentalcars.com(支持中文)
2018/10/12 全球购物
销售自荐信
2013/10/22 职场文书
前台领班岗位职责
2013/12/04 职场文书
信息与工商管理职业规划范文:为梦想而搏击
2014/09/11 职场文书
饭店服务员岗位职责
2015/02/09 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
机关干部作风整顿心得体会
2016/01/22 职场文书
导游词之安徽醉翁亭
2020/01/10 职场文书
Java界面编程实现界面跳转
2022/06/16 Java/Android
vue递归实现树形组件
2022/07/15 Vue.js