利用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 OS模块常用函数说明
May 23 Python
Python文档生成工具pydoc使用介绍
Jun 02 Python
使用pyecharts无法import Bar的解决方案
Apr 23 Python
Python基于回溯法子集树模板解决马踏棋盘问题示例
Sep 11 Python
利用python对Excel中的特定数据提取并写入新表的方法
Jun 14 Python
Python分割指定页数的pdf文件方法
Oct 26 Python
python 遍历列表提取下标和值的实例
Dec 25 Python
python使用phoenixdb操作hbase的方法示例
Feb 28 Python
基于matplotlib xticks用法详解
Apr 16 Python
Python通过zookeeper实现分布式服务代码解析
Jul 22 Python
python 如何用urllib与服务端交互(发送和接收数据)
Mar 04 Python
提取视频中的音频 Python只需要三行代码!
May 10 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多用户计数器代码
2007/03/11 PHP
解析ajax事件的调用顺序
2013/06/17 PHP
WampServer搭建php环境时遇到的问题汇总
2015/07/23 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
2018/03/15 PHP
JavaScript的目的分析
2007/01/05 Javascript
js中访问html中iframe的文档对象的代码[IE6,IE7,IE8,FF]
2011/01/08 Javascript
js的表单操作 简单计算器
2011/12/29 Javascript
JavaScript输入邮箱自动提示实例代码
2014/01/13 Javascript
js实现索引图片切换效果
2015/11/21 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
2016/12/13 Javascript
前端js弹出框组件使用方法
2020/08/24 Javascript
vue.js删除动态绑定的radio的指定项
2017/06/02 Javascript
详解React Native开源时间日期选择器组件(react-native-datetime)
2017/09/13 Javascript
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
2017/09/19 NodeJs
Vue按需加载的具体实现
2017/12/02 Javascript
Vuejs 单文件组件实例详解
2018/02/09 Javascript
基于ssm框架实现layui分页效果
2019/07/27 Javascript
javascript实现倒计时效果
2020/02/17 Javascript
Nuxt配置Element-UI按需引入的操作方法
2020/07/06 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
vue+springboot+element+vue-resource实现文件上传教程
2020/10/21 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
2020/10/28 Javascript
python正则表达式中的括号匹配问题
2014/12/14 Python
python3 破解 geetest(极验)的滑块验证码功能
2018/02/24 Python
使用python生成目录树
2018/03/29 Python
Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统
2019/09/05 Python
python实现超级玛丽游戏
2020/03/18 Python
tensorflow2.0教程之Keras快速入门
2021/02/20 Python
办公室文秘岗位职责
2013/11/15 职场文书
护理专业学生职业生涯规划范文
2014/03/11 职场文书
美术社团活动总结
2014/06/27 职场文书
关于成绩下滑的自我检讨书
2014/09/20 职场文书
幼师辞职信范文
2015/02/27 职场文书
2016年安全月活动总结
2016/04/06 职场文书
Python 实现定积分与二重定积分的操作
2021/05/26 Python
DIV CSS实现网页背景半透明效果
2021/12/06 HTML / CSS