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中isnumeric()方法的使用简介
May 19 Python
Python使用logging结合decorator模式实现优化日志输出的方法
Apr 16 Python
pandas中的DataFrame按指定顺序输出所有列的方法
Apr 10 Python
django框架自定义用户表操作示例
Aug 07 Python
浅谈pycharm下找不到sqlalchemy的问题
Dec 03 Python
python cumsum函数的具体使用
Jul 29 Python
python异常触发及自定义异常类解析
Aug 06 Python
解决Python二维数组赋值问题
Nov 28 Python
Python 读取 YUV(NV12) 视频文件实例
Dec 09 Python
如何在Python 游戏中模拟引力
Mar 27 Python
通过实例简单了解Python sys.argv[]使用方法
Aug 04 Python
安装并免费使用Pycharm专业版(学生/教师)
Sep 24 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
wordpress之wp-settings.php
2007/08/17 PHP
PHP curl_setopt()函数实例代码与参数分析
2011/06/02 PHP
php获取用户IPv4或IPv6地址的代码
2012/11/15 PHP
PHP中单引号与双引号的区别分析
2014/08/19 PHP
php文件上传简单实现方法
2015/01/24 PHP
PHP内核学习教程之php opcode内核实现
2016/01/27 PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
2017/03/14 PHP
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
setInterval 和 setTimeout会产生内存溢出
2008/02/15 Javascript
Javascript中的for in循环和hasOwnProperty结合使用
2013/06/05 Javascript
javascript实现模拟时钟的方法
2015/05/13 Javascript
js基础之DOM中document对象的常用属性方法详解
2016/10/28 Javascript
基于AGS JS开发自定义贴图图层
2017/03/31 Javascript
JavaScript实现二维坐标点排序效果
2017/07/18 Javascript
Vue.js自定义事件的表单输入组件方法
2018/03/08 Javascript
JS中数据结构之栈
2019/01/01 Javascript
利用angular自动编译andriod APK的绕坑经历分享
2019/03/08 Javascript
JS使用正则表达式提交页面验证的代码
2019/10/16 Javascript
JavaScript中EventBus实现对象之间通信
2020/10/18 Javascript
netbeans7安装python插件的方法图解
2013/12/24 Python
详解python 注释、变量、类型
2018/08/10 Python
使用Python实现文字转语音并生成wav文件的例子
2019/08/08 Python
详解Python直接赋值,深拷贝和浅拷贝
2020/07/09 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
HTML5 history新特性pushState、replaceState及两者的区别
2015/12/26 HTML / CSS
英国航空官网:British Airways
2016/09/11 全球购物
Johnston & Murphy官网: 约翰斯顿·墨菲牛津总统鞋
2018/01/09 全球购物
Piercing Pagoda官网:耳环、戒指、项链、手链等
2020/09/28 全球购物
思想政治教育专业个人求职信范文
2013/12/20 职场文书
《你在为谁工作》心得体会(共8篇)
2016/01/20 职场文书
公文写作指导之倡议书!
2019/07/03 职场文书
2019幼儿教师求职信(3篇)
2019/09/20 职场文书
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
2021/04/16 PHP
浅谈Laravel中使用Slack进行异常通知
2021/05/29 PHP
JPA 通过Specification如何实现复杂查询
2021/11/23 Java/Android
如何利用python实现列表嵌套字典取值
2022/06/10 Python