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 相关文章推荐
解析Python中的eval()、exec()及其相关函数
Dec 20 Python
python kmeans聚类简单介绍和实现代码
Feb 23 Python
python3 实现对图片进行局部切割的方法
Dec 05 Python
python爬虫超时的处理的实例
Dec 19 Python
Python分布式进程中你会遇到的问题解析
May 28 Python
PyQt5 窗口切换与自定义对话框的实例
Jun 20 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
Aug 19 Python
flask框架json数据的拿取和返回操作示例
Nov 28 Python
python通过文本在一个图中画多条线的实例
Feb 21 Python
Python猜数字算法题详解
Mar 01 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
Jun 10 Python
python 基于opencv实现高斯平滑
Dec 18 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
php 文章调用类代码
2011/08/11 PHP
基于php和mysql的简单的dao类实现crud操作功能
2014/01/27 PHP
Smarty模板学习笔记之Smarty简介
2014/05/20 PHP
一个严格的PHP Session会话超时时间设置方法
2014/06/10 PHP
extjs fckeditor集成代码
2009/05/10 Javascript
UserData用法总结 lanyu出品
2010/07/01 Javascript
jquery自动将form表单封装成json的具体实现
2014/03/17 Javascript
js 判断浏览器使用的语言示例代码
2014/03/22 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
用js动态添加html元素,以及属性的简单实例
2016/07/19 Javascript
JS生成和下载二维码的代码
2016/12/07 Javascript
ajax请求data遇到的问题分析
2018/01/18 Javascript
jQuery niceScroll滚动条错位问题的解决方法
2018/02/03 jQuery
Vue响应式原理Observer、Dep、Watcher理解
2019/06/06 Javascript
JS阻止事件冒泡的方法详解
2019/08/26 Javascript
ES10的13个新特性示例(小结)
2019/09/23 Javascript
jquery添加div实现消息聊天框
2020/02/08 jQuery
[01:24]2014DOTA2 TI第二日 YYF表示这届谁赢都有可能
2014/07/11 DOTA
[42:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS OpTic
2018/03/31 DOTA
Python3.4编程实现简单抓取爬虫功能示例
2017/09/14 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
2019/10/09 Python
py-charm延长试用期限实例
2019/12/22 Python
python主要用于哪些方向
2020/07/05 Python
html5中audio支持音频格式的解决方法
2018/08/24 HTML / CSS
俄罗斯领先的移动和数字设备在线商店:Svyaznoy.ru
2020/12/21 全球购物
如何处理简单的PHP错误
2015/10/14 面试题
车间主任岗位职责
2014/03/16 职场文书
中学生学雷锋演讲稿
2014/04/26 职场文书
建筑工程技术专业求职信
2014/07/16 职场文书
教师遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
关于安全的广播稿
2014/10/23 职场文书
行政人事专员岗位职责
2015/04/07 职场文书
《草虫的村落》教学反思
2016/02/20 职场文书
html+css实现分层金字塔的实例
2021/06/02 HTML / CSS
Spring Security中用JWT退出登录时遇到的坑
2021/10/16 Java/Android
MySQL串行化隔离级别(间隙锁实现)
2022/06/16 MySQL