利用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中暂存上传图片的方法
Feb 18 Python
Python的Flask框架中实现登录用户的个人资料和头像的教程
Apr 20 Python
详解python时间模块中的datetime模块
Jan 13 Python
Python基于select实现的socket服务器
Apr 13 Python
python实现批量解析邮件并下载附件
Jun 19 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
Jul 06 Python
如何解决tensorflow恢复模型的特定值时出错
Feb 06 Python
Python 线性回归分析以及评价指标详解
Apr 02 Python
jupyter notebook 参数传递给shell命令行实例
Apr 10 Python
Python selenium爬取微博数据代码实例
May 22 Python
python3 使用ssh隧道连接mysql的操作
Dec 05 Python
python 实现socket服务端并发的四种方式
Dec 14 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
实用函数3
2007/11/08 PHP
PHP 检查扩展库或函数是否可用的代码
2010/04/06 PHP
php mysql_real_escape_string函数用法与实例教程
2013/09/30 PHP
PHP解析html类库simple_html_dom的转码bug
2014/05/22 PHP
php实现的ping端口函数实例
2014/11/12 PHP
php生成图片验证码的实例讲解
2015/08/03 PHP
php微信公众平台开发(三)订阅事件处理
2016/12/06 PHP
Yii 框架入口脚本示例分析
2020/05/19 PHP
asp批量修改记录的代码
2008/06/25 Javascript
js判断变量是否空值的代码
2008/10/26 Javascript
javascript 面向对象编程基础 多态
2009/08/21 Javascript
jQuery 下拉列表 二级联动插件分享
2012/03/29 Javascript
jQuery Ajax调用WCF服务详细教程
2015/03/31 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
微信小程序 网络API Websocket详解
2016/11/09 Javascript
Angular学习教程之RouterLink花式跳转
2018/05/03 Javascript
setTimeout与setInterval的区别浅析
2019/03/23 Javascript
jQuery实现动态添加和删除input框代码实例
2019/03/29 jQuery
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
VUE路由动态加载实例代码讲解
2019/08/26 Javascript
JavaScript实现简单计算器功能
2019/12/19 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
2020/05/08 Javascript
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
用matplotlib画等高线图详解
2017/12/14 Python
Tensorflow加载预训练模型和保存模型的实例
2018/07/27 Python
Python面向对象之类的内置attr属性示例
2018/12/14 Python
python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例
2020/02/28 Python
德国在线购买葡萄酒网站:Geile Weine
2019/09/24 全球购物
大学毕业通用个人的求职信
2013/12/08 职场文书
毕业评语大全
2014/05/04 职场文书
公司总经理岗位职责范本
2014/08/15 职场文书
离婚协议书范文2014
2014/10/16 职场文书
期末复习计划
2015/01/19 职场文书
拙作再改《我的收音机情缘》
2022/04/05 无线电
使用Redis实现分布式锁的方法
2022/06/16 Redis