BootstrapDjango学习笔记2:后台管理的优化

时区修正和粤语化

接下去,大家需要缓解城区问题。打开DjangoQuickTour目录下的settings.py文件,上边一行:

TIME_ZONE = 'UTC'

改成:

TIME_ZONE = 'Asia/Shanghai'

我们顺便也把管理后台的言语改成中文,方法就是把settings.py中的:

LANGUAGE_CODE = 'en-us'

改成:

LANGUAGE_CODE = 'zh-Hans'

刷新页面,然后再添加一条数据:

添加新数据

闽南语界面

咱俩得以见见小说的颁发时间已经和系统时间相同了,而且界面也变成中文了。

集成Bootstrap框架

Bootstrap是由Twitter的设计师马克(Mark) Otto和雅各布(Jacob) Thornton合作开发的,基于
HTML、CSS、JAVASCRIPT的CSS/HTML框架,它简洁利落,使得Web开发尤其迅速,并提供了优雅的HTML和CSS规范,它即是由动态CSS语言Less写成。Bootstrap一经推出后颇受欢迎,假诺能把Bootstrap集成到本人的博客里,效果自然科学。

那么怎么把Bootstrap集成到自我的Django博客里啊?大狗平素相信一条真理,“大多数你想要实现的效劳,都有人实现过,并且可以在GitHub上找到”。在GitHub上摸索了弹指间,居然找到一个类型:

https://github.com/django-admin-bootstrap/django-admin-bootstrap

遵照指示,首先安装工具包,如故在命令行工具中运行:

pip install bootstrap-admin

然后,把“bootstrap_admin”添加到DjangoQuickTour目录下的settings.py中的“INSTALLED_APPS”配置节,并且保证其冒出在“django.contrib.admin”从前,就像这么:

INSTALLED_APPS = [
    'bootstrap_admin',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
]

接下来,用下边的始末覆盖settings.py文件中的“TEMPLATES”配置节:

from django.conf import global_settings
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            # insert your TEMPLATE_DIRS here
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                # Insert your TEMPLATE_CONTEXT_PROCESSORS here or use this
                # list if you haven't customized them:
                'django.contrib.auth.context_processors.auth',
                'django.template.context_processors.debug',
                'django.template.context_processors.i18n',
                'django.template.context_processors.media',
                'django.template.context_processors.static',
                'django.template.context_processors.tz',
                'django.contrib.messages.context_processors.messages',
                'django.template.context_processors.request'
            ]
        },
    },
]

BOOTSTRAP_ADMIN_SIDEBAR_MENU = True

接下来,保存代码,刷新浏览器中的后台管理页面。Look,是不是完美多啊?

Bootstrap整合后的后台管理

再完美一下管理后台

为了方便我们后边的付出,大狗又录了几条数据进去,喏~

录入数据后

可是,随着数据的录入,也表表露管理后台的局部题目:

  • 尚无检索效果,即便将来多少多了,查找需要操作的多寡记录会是个问题
  • 数码的录入时间呈现错误(我们可以相比一下最终一条数据记录和截图右上角的系统时间),这应该是类别设置的时区错误造成的
  • (妹纸说)管理后台的界面简直丑爆了

咳咳,这多少个…好呢,这大家就来改改看。

追寻和过滤

管制后台集成搜索效果,应该不会很难难,大狗觉得Django应该会提供相关的接口。下面我们就来为治本后台提供找寻效用,大家的计划是:

  • 提供依据揭橥日期提供数据过滤的效应
  • 提供依据著作题目查询的效益

俺们开拓blog目录下的admin.py文件,做如下的改动:

from django.contrib import admin
from blog.models import *

class ArticleAdmin(admin.ModelAdmin):
    list_display = ('title', 'timestamp')
    list_filter = ['timestamp'] //按添加日期过滤
    search_fields = ['title'] //按文章题目搜索

admin.site.register(Article, ArticleAdmin)

我们把admin.py保存一下,然后在浏览器中刷新一下页面,呦吼~

参加搜索和过滤效果的军事管制后台

俺们先来尝试遵照公布日期过滤的功力。咱们在后边的列表中点击“This
month”,大家得以看来过滤后的多少:

按发表日期过滤

大家点击“Any
date”可重置发表日期过滤器。接下来,我们来试试看按作品题目搜索的法力:

按作品题目查询

哦,两行代码实现了五个在另外开销平台需要几十行仍旧上百行才能搞定的职能。这就是Django的强有力之处。

模型和动用音讯的闽南语化

大狗还发现了一个题材,我们在档次中开创的类和特性在保管后布里Stowe都是一贯体现其名目,在英文界面中还好,凡事在闽南语环境中展现非常的违和(“Article”是哪些鬼?)所以,我们要为我们创造的模型类和性质加上粤语名称。我们打开blog目录下的models.py,修改为如下的样板:

from __future__ import unicode_literals
from django.db import models

class Article(models.Model):
    title = models.CharField(max_length = 100, verbose_name = '标题')
    author = models.CharField(max_length = 30, verbose_name = '作者')
    body = models.TextField(verbose_name = '内容')
    timestamp = models.DateTimeField(verbose_name = '发布日期')

    def __unicode__(self):
        return self.title

    class Meta:
        verbose_name = '文章'
        verbose_name_plural = '文章' //设置复数的显示,否则会出现“文章s”这种逆天的东东

接下来保留文件后,开发服务器就报错了,“Non-ASCII
character”,汪嘞个嗷的!查了下文档,发现是字符编码问题,在models.py最前方加了一条龙编码阐明:

# encoding:utf-8

刷新界面后,问题化解了:

模型音讯中文化

模型音信普通话化

如此这般看上去就美观多了。

只是,还有少数小题目。模型类的名称和字段可以显得为闽南语,那么应用呢?“BLOG”是什么样鬼?查过文档后,发现能够修改blog目录下的__init__.py,我们在内部输入上边的代码:

# encoding:utf-8

from os import path
from django.apps import AppConfig

VERBOSE_APP_NAME = '博客'


def get_current_app_name(file):
    return path.dirname(file).replace('\\', '/').split('/')[-1]


class AppVerboseNameConfig(AppConfig):
    name = get_current_app_name(__file__)
    verbose_name = VERBOSE_APP_NAME


default_app_config = get_current_app_name(__file__) + '.__init__.AppVerboseNameConfig'

封存代码,在浏览器中刷新页面,然后… 就华丽丽的报错了!

粤语编码报错

Scheiße!忘记标示Unicode字符了!在’博客’前面加上一个字母“u”,再保存刷新,问题迎刃而解了。

动用体现闽南语名称

相关文章