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解析xml成对应的html示例分享
Apr 02 Python
使用httplib模块来制作Python下HTTP客户端的方法
Jun 19 Python
在Python的Flask框架中构建Web表单的教程
Jun 04 Python
Python实现字符串与数组相互转换功能示例
Sep 22 Python
python 对给定可迭代集合统计出现频率,并排序的方法
Oct 18 Python
使用python3实现操作串口详解
Jan 01 Python
python matplotlib画图库学习绘制常用的图
Mar 19 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
Apr 18 Python
在pycharm中实现删除bookmark
Feb 14 Python
python request 模块详细介绍
Nov 10 Python
Python django中如何使用restful框架
Jun 23 Python
python3 字符串str和bytes相互转换
Mar 23 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正则匹配html中带class的div并选取其中内容的方法
2015/01/13 PHP
在Laravel的Model层做数据缓存的实现
2019/09/26 PHP
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
JQuery+Ajax无刷新分页的实例代码
2014/02/08 Javascript
js从Cookies里面取值的简单实现
2014/06/30 Javascript
JavaScript模拟深蓝vs卡斯帕罗夫的国际象棋对局示例
2015/04/22 Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
2015/09/09 Javascript
JS+CSS实现仿雅虎另类滑动门切换效果
2015/10/13 Javascript
jQuery手动点击实现图片轮播特效
2020/04/20 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
基于BootStrap的Metronic框架实现页面链接收藏夹功能按钮移动收藏记录(使用Sortable进行拖动排序)
2016/08/29 Javascript
javascript trie前缀树的示例
2018/01/29 Javascript
Vue项目webpack打包部署到Tomcat刷新报404错误问题的解决方案
2018/05/15 Javascript
使用layui 渲染table数据表格的实例代码
2018/08/19 Javascript
JS获取当前时间的实例代码(昨天、今天、明天)
2018/11/13 Javascript
深入解析Vue源码实例挂载与编译流程实现思路详解
2019/05/05 Javascript
node事件循环和process模块实例分析
2020/02/14 Javascript
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
[34:39]Secret vs VG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
2017/10/13 Python
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
Python实现判断一行代码是否为注释的方法
2018/05/23 Python
python使用rpc框架gRPC的方法
2018/08/24 Python
python3.x实现base64加密和解密
2019/03/28 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
2019/08/07 Python
简单了解Pandas缺失值处理方法
2019/11/16 Python
Python使用configparser库读取配置文件
2020/02/22 Python
Python collections.defaultdict模块用法详解
2020/06/18 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
2020/07/14 Python
python实现扫雷游戏的示例
2020/10/20 Python
Python常用GUI框架原理解析汇总
2020/12/07 Python
盛大笔试题
2016/11/05 面试题
城市规划毕业生求职信
2013/10/10 职场文书
新闻学专业个人求职信写作
2014/02/04 职场文书
幸福中国演讲稿
2014/09/12 职场文书
python神经网络学习 使用Keras进行简单分类
2022/05/04 Python