利用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批量同步web服务器代码核心程序
Sep 01 Python
python显示生日是星期几的方法
May 27 Python
Python3如何解决字符编码问题详解
Apr 23 Python
Python基于Floyd算法求解最短路径距离问题实例详解
May 16 Python
python re正则匹配网页中图片url地址的方法
Dec 20 Python
对python以16进制打印字节数组的方法详解
Jan 24 Python
python利用多种方式来统计词频(单词个数)
May 27 Python
python循环定时中断执行某一段程序的实例
Jun 29 Python
Django密码系统实现过程详解
Jul 19 Python
numpy创建单位矩阵和对角矩阵的实例
Nov 29 Python
python实现飞机大战项目
Mar 11 Python
PyQt5结合QtDesigner实现文本框读写操作
Jun 11 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修正代码
2011/05/09 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
2012/06/21 PHP
PHP判断变量是否为0的方法
2014/02/08 PHP
smarty获得当前url的方法分享
2014/02/14 PHP
php中fgetcsv()函数用法实例
2014/11/28 PHP
PHP扩展程序实现守护进程
2015/04/16 PHP
PHP加密解密类实例代码
2016/07/20 PHP
PHP实现的解汉诺塔问题算法示例
2018/08/06 PHP
详解PHP的抽象类和抽象方法以及接口总结
2019/03/15 PHP
php获取微信openid方法总结
2019/10/10 PHP
ThinkPHP5分页paginate代码实例解析
2020/11/10 PHP
Javascript中的关键字和保留字整理
2014/10/16 Javascript
js 声明数组和向数组中添加对象变量的简单实例
2016/07/28 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
详谈jQuery中的一些正则匹配表达式
2017/03/08 Javascript
使用apifm-wxapi快速开发小程序过程详解
2019/08/05 Javascript
vue实现计算器功能
2020/02/22 Javascript
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
[06:21]2014DOTA2国际邀请赛 庆祝VG首阶段领跑;B叔为挣牛排半夜整理情报
2014/07/13 DOTA
Python常见文件操作的函数示例代码
2011/11/15 Python
Python unittest单元测试框架总结
2018/09/08 Python
python中利用numpy.array()实现俩个数值列表的对应相加方法
2019/08/26 Python
Django web自定义通用权限控制实现方法
2020/11/24 Python
Python绘制数码晶体管日期
2021/02/19 Python
CSS3 :not()选择器实现最后一行li去除某种css样式
2016/10/19 HTML / CSS
英国最大的婴儿监视器网上商店:Baby Monitors Direct
2018/04/24 全球购物
OSPREY LONDON官网:英国本土皮具品牌
2019/05/31 全球购物
常用UNIX 命令(Linux的常用命令)
2015/12/26 面试题
团支部推优材料
2014/05/21 职场文书
物业公司的岗位任命书
2014/06/06 职场文书
社团活动总结书
2014/06/27 职场文书
机关作风建设心得体会
2014/10/22 职场文书
国家助学金受助感言
2015/08/01 职场文书
详解Spring Security中的HttpBasic登录验证模式
2022/03/17 Java/Android
Apache Kafka 分区重分配的实现原理解析
2022/07/15 Servers