Django 后台显示自定义
后台进阶
后台汉化
在项目的第二层demo目录下的settings.py文件中找到这两句并修改为如下,修改时区是为了在写入或者修改数据库中关于时间的字段能符合你本地时间(以下是基于django1.8版本以上修改方式):
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
1
2
后台标题和名称的修改
在上一章中你会发现后台管理的标题是:Django管理,在实际项目中不可能使用它这个标题,原来界面如下:
可以看到网页title为“登录|Django后台管理”,header为“Django管理”,当然这些是可以修改的,我们打开login这个app模型下的admin.py文件并修改为如下(还有一种方法是重写admin.AdminSite这里就不做介绍了):
from django.contrib import admin
# Register your models here.
from login.models import Members
from login.models import Types
admin.site.site_header = '智城后台管理'
admin.site.site_title = '智城'
admin.site.register(Members)
admin.site.register(Types)
1
2
3
4
5
6
7
8
9
10
11
修改后的界面如下:
favicon.ico配置
默认情况下,浏览器访问一个网站的时候,同时还会向服务器请求“/favicon.ico”这个URL,目的是获取网站的图标。没有图标就用默认的图标,所以这个错误也没有跟通常的404错误一样在网页上显示出来。
不过我们还是应该给网站配置一个图标,这样用户体验会更好一些。
首先我们选好一个图标并重命名为favicon.ico,然后把这个图标放在 /static/img/ 目录下。由于django后台中没有设置favicon.ico图标的语句,所以我们得修改它的base.html页面。 任何Django默认admin模块都可以被重写或者修改,重写修改后的模板要放在哪里呢?默认情况,Django自动查找目录/templates/子目录里面的每个应用包,作为后备(不要忘记django.contrib.admin也是一个应用),如果没找到对应的重写或者修改的文件就回去django的安装目录里去找默认的模板文件。所以我们要修改它的模板就先在templates文件夹下建立一个admin文件,然后通过在终端找到django安装包路径,然后去里面将base_site.html复制到刚刚建立的admin目录下:
# python2的django安装包所在位置
python -c "import sys;sys.path=sys.path[1:];import django;print(django.__path__)"
# python3的django安装包所在位置
python3 -c "import sys;sys.path=sys.path[1:];import django;print(django.__path__)"
1
2
3
4
然后进入到这个目录,再进入里面的 contrib/admin/templates/admin/ 目录就能看到这个html文件了,将这个base_site.html文件复制到新建的admin目录下,添加一行link标签:
<head>
<title>{% block title %}{% endblock %}</title>
<link rel="icon" type="image.png" href="/static/img/favicon.ico"> <!-- added here -->
<link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" />
{% block extrastyle %}{% endblock %}
{% if LANGUAGE_BIDI %}<link rel="stylesheet" type="text/css" href="{% block stylesheet_rtl %}{% static "admin/css/rtl.css" %}{% endblock %}" />{% endif %}
{% block extrahead %}{% endblock %}
{% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE" />{% endblock %}
</head>
1
2
3
4
5
6
7
8
9
然后运行后台就可以看到网站的图标了:
后台logo添加
由于django后台没有logo,我们想添加自己的logo也要修改它的默认模板,我们只需要修改base_site.html文件就可以了,同favicon.ico配置一样,去到django包安装的 contrib/admin/templates/admin/ 目录下复制base_site.html到admin文件夹下,并做如下修改(在django的模板中,一个block代表html中的一个div标签,比如{% block branding %}在html中解析出来就是<div id='branding'>,django已经写好branding的css样式,我们把logo图片设置大小后放在这里):
{% extends "admin/base.html" %}
{% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}
{% block branding %}
<img src="/static/img/xiaomi_logo.png" style="line-height: 40px; width: 40px;height: 40px;float: left;"> <!-- added a line here-->
<h1 id="site-name" style="float: left;"><a href="{% url 'admin:index' %}">{{ site_header|default:_('Django administration') }}</a></h1> <!-- added style here-->
{% endblock %}
{% block nav-global %}{% endblock %}
浙公网安备 33010602011771号