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使用urllib2实现发送带cookie的请求
Apr 28 Python
python基于xmlrpc实现二进制文件传输的方法
Jun 02 Python
Python输出汉字字库及将文字转换为图片的方法
Jun 04 Python
python3中dict(字典)的使用方法示例
Mar 22 Python
OpenCV+Python识别车牌和字符分割的实现
Jan 31 Python
python实现字符串加密 生成唯一固定长度字符串
Mar 22 Python
mac系统下Redis安装和使用步骤详解
Jul 09 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
Oct 25 Python
3种python调用其他脚本的方法
Jan 06 Python
tensorflow mnist 数据加载实现并画图效果
Feb 05 Python
python中sklearn的pipeline模块实例详解
May 21 Python
Python实现随机爬山算法
Jan 29 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制作静态网站的模板框架(一)
2006/10/09 PHP
main.php
2006/12/09 PHP
使用PHP强制下载PDF文件示例
2014/01/17 PHP
php中sprintf与printf函数用法区别解析
2014/02/17 PHP
PHP中文竖排转换实现方法
2015/10/23 PHP
微信JSSDK分享功能图文实例详解
2019/04/08 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
短信提示使用 特效
2007/01/19 Javascript
event.keyCode键码值表 附只能输入特定的字符串代码
2009/05/15 Javascript
JQuery的AJAX实现文件下载的小例子
2013/05/15 Javascript
Jquery中"$(document).ready(function(){ })"函数的使用详解
2013/12/30 Javascript
javascript中定义私有方法说明(private method)
2014/01/27 Javascript
JavaScript中的值类型详细介绍
2014/12/29 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
微信小程序 MINA文件结构
2016/10/17 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
VueJs使用Amaze ui调整列表和内容页面
2017/11/30 Javascript
[53:29]完美世界DOTA2联赛循环赛 DM vs Matador BO2第二场 11.04
2020/11/05 DOTA
Python图片裁剪实例代码(如头像裁剪)
2017/06/21 Python
python后端接收前端回传的文件方法
2019/01/02 Python
python实现电子产品商店
2019/02/26 Python
基于Python函数和变量名解析
2019/07/19 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
2020/06/03 Python
opencv 查找连通区域 最大面积实例
2020/06/04 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
2018/01/03 HTML / CSS
欧洲最大的婴幼儿服装及内衣公司:Petit Bateau(小帆船)
2016/08/16 全球购物
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
运动会致辞稿50字
2014/02/04 职场文书
法学函授自我鉴定
2014/02/06 职场文书
解除聘用合同证明书范本
2014/09/11 职场文书
构建和谐校园倡议书
2015/01/19 职场文书
会计出纳岗位职责
2015/03/31 职场文书
重温入党誓词主持词
2015/06/29 职场文书
药房管理制度范本
2015/08/06 职场文书
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android