利用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中bisect的用法
Sep 23 Python
itchat和matplotlib的结合使用爬取微信信息的实例
Aug 25 Python
Python构建网页爬虫原理分析
Dec 19 Python
python实现简单登陆流程的方法
Apr 22 Python
python 自动去除空行的实例
Jul 24 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
Jun 14 Python
python celery分布式任务队列的使用详解
Jul 08 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
Jan 20 Python
Python3 hashlib密码散列算法原理详解
Mar 30 Python
python中使用input()函数获取用户输入值方式
May 03 Python
Python lxml库的简单介绍及基本使用讲解
Dec 22 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
Jan 21 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
PHP与C#分别格式化文件大小的代码
2011/05/14 PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
2012/10/05 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
2014/06/20 PHP
tp5框架内使用tp3.2分页的方法分析
2019/05/05 PHP
javascript语言结构小记(一)
2011/09/10 Javascript
AugularJS从入门到实践(必看篇)
2017/07/10 Javascript
vue事件修饰符和按键修饰符用法总结
2017/07/25 Javascript
p5.js 毕达哥拉斯树的实现代码
2018/03/23 Javascript
详解Node.js中path模块的resolve()和join()方法的区别
2018/10/29 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
angular组件间传值测试的方法详解
2020/05/07 Javascript
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
跟老齐学Python之list和str比较
2014/09/20 Python
跟老齐学Python之画圈还不简单吗?
2014/09/20 Python
Python获取单个程序CPU使用情况趋势图
2015/03/10 Python
Python玩转PDF的各种骚操作
2019/05/06 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
Python实现性能自动化测试竟然如此简单
2019/07/30 Python
Python小程序 控制鼠标循环点击代码实例
2019/10/08 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
2019/11/19 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
2020/04/10 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
Python 实现简单的客户端认证
2020/07/29 Python
英国信箱在线鲜花速递公司:Bloom & Wild
2019/03/10 全球购物
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
CHRONEXT英国:您的首选奢华腕表目的地
2020/03/30 全球购物
房地产管理毕业生自荐信
2013/11/04 职场文书
医药代表个人的求职信分享
2013/12/08 职场文书
初一家长会邀请函
2014/01/31 职场文书
项目总经理岗位职责
2014/02/14 职场文书
租房协议书怎么写
2014/04/10 职场文书
新教师2015年度工作总结
2015/07/22 职场文书
导游词之江南园林狮子林
2019/09/16 职场文书
微软PC Health Check电脑健康状况检查应用下载(Win11配置检测工具)
2021/06/26 数码科技