django美化后台django-suit的安装配置操作


Posted in Python onJuly 12, 2020

环境:python2.7+django1.9

1、先下载django-suti

pip install django-suit

2、配置项目

打开setting.py,然后找到------------------------INSTALLED_APPS

在'django.contrib.admin',前面写入 'suit',

INSTALLED_APPS = [
 'suit',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',

]

修改语言、地区、时间格式:

LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
DATETIME_FORMAT = 'Y-m-d H:i:s' 
DATE_FORMAT = 'Y-m-d'

补充知识:利用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里面的坑,待研究完再回来补充。

以上这篇django美化后台django-suit的安装配置操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
pycharm 使用心得(三)Hello world!
Jun 05 Python
Python中关键字is与==的区别简述
Jul 31 Python
Python的多态性实例分析
Jul 07 Python
Python中文件I/O高效操作处理的技巧分享
Feb 04 Python
python引入导入自定义模块和外部文件的实例
Jul 24 Python
python 垃圾收集机制的实例详解
Aug 20 Python
Python基于回溯法子集树模板解决找零问题示例
Sep 11 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
Jun 14 Python
python实现多人聊天室
Mar 31 Python
通过python检测字符串的字母
Feb 18 Python
python如何通过闭包实现计算器的功能
Feb 22 Python
golang中的空接口使用详解
Mar 30 Python
浅谈matplotlib 绘制梯度下降求解过程
Jul 12 #Python
使用matplotlib的pyplot模块绘图的实现示例
Jul 12 #Python
django template实现定义临时变量,自定义赋值、自增实例
Jul 12 #Python
Django后端分离 使用element-ui文件上传方式
Jul 12 #Python
PyQt5-QDateEdit的简单使用操作
Jul 12 #Python
Python logging日志模块 配置文件方式
Jul 12 #Python
django rest framework 过滤时间操作
Jul 12 #Python
You might like
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
PHP封装cURL工具类与应用示例
2019/07/01 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
2020/08/03 PHP
Extjs TimeField 显示正常时间格式的代码
2011/06/28 Javascript
Jquery中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
2011/10/12 Javascript
IE与Firefox在JavaScript上的7个不同句法分享
2011/10/30 Javascript
基于jQuery实现左右div自适应高度完全相同的代码
2012/08/09 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
2013/12/02 Javascript
js面向对象之静态方法和静态属性实例分析
2015/01/10 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
CSS中position属性之fixed实现div居中
2015/12/14 Javascript
jQuery仿京东商城楼梯式导航定位菜单
2016/07/25 Javascript
使用React实现轮播效果组件示例代码
2016/09/05 Javascript
动态JavaScript所造成一些你不知道的危害
2016/09/25 Javascript
javascript实现鼠标点击页面 移动DIV
2016/12/02 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
vue.js过滤器+ajax实现事件监听及后台php数据交互实例
2018/05/22 Javascript
jQuery超简单遮罩层实现方法示例
2018/09/06 jQuery
详解Vue.js和layui日期控件冲突问题解决办法
2019/07/25 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
2019/10/08 Javascript
[02:29]DOTA2英雄基础教程 陈
2013/12/17 DOTA
python中类变量与成员变量的使用注意点总结
2017/04/29 Python
Python实现对字符串的加密解密方法示例
2017/04/29 Python
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
Python编写Windows Service服务程序
2018/01/04 Python
代码实例讲解python3的编码问题
2019/07/08 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
2020/01/08 Python
python爬虫实现POST request payload形式的请求
2020/04/30 Python
如何在python中处理配置文件代码实例
2020/09/27 Python
Kidsroom台湾:来自德国的婴儿用品
2017/12/11 全球购物
教师评优的个人自我评价分享
2013/09/19 职场文书
学院书画协会部门岗位职责
2013/12/01 职场文书
毕业生求职自荐信怎么写
2014/01/08 职场文书
《美丽的小兴安岭》教学反思
2014/02/26 职场文书
经济信息系毕业生自荐信范文
2014/03/15 职场文书
质检员岗位职责范本
2015/04/07 职场文书