Python3.0 Django2.0.4 搭建项目(六)

接上一篇Python3.0 Django2.0.4 搭建项目(五),这一篇我们将添加样式、图片和后台功能优化。

自定义应用的界面和风格

首先,在你的 polls 目录下创建一个名为 static 的目录。Django 将在该目录下查找静态文件,这种方式和 Diango 在 polls/templates/ 目录下查找 template 的方式类似。

在刚创建的 static 文件夹中创建一个名为 polls 的文件夹,再在 polls 文件夹中创建一个名为 style.css 的文件

将以下代码放入样式表(polls/static/polls/style.css):

polls/static/polls/style.css

li a {
    color: green;
}

下一步,在 polls/templates/polls/index.html 的文件头添加以下内容:

polls/templates/polls/index.html


{% load static %}


{% static %} 模板标签会生成静态文件的绝对路径。

浏览器重载 http://localhost:8000/polls/,然后就可以看到投票链接是绿色的(Django 样式),这意味着你的样式表被正确加载了。

Python3.0 Django2.0.4 搭建项目(六)_第1张图片
image.png

添加一个背景图

接着,我们会创建一个用于存在图像的目录。在 polls/static/polls 目录下创建一个名为 images 的子目录。在这个目录中,放一张名为 background.gif 的图片。换言之,在目录 polls/static/polls/images/background.gif 中放一张图片。

随后,在你的样式表(polls/static/polls/style.css)中添加:

polls/static/polls/style.css

body {
    background: white url("images/background.gif") no-repeat;
}

浏览器重载 http://localhost:8000/polls/,你将在屏幕的左上角见到这张背景图。

自定义后台表单

通过 admin.site.register(Question) 注册 Question 模型,Django 能够构建一个默认的表单用于展示。通常来说,你期望能自定义表单的外观和工作方式。你可以在注册模型时将这些设置告诉 Django。

让我们通过重排列表单上的字段来看看它是怎么工作的。用以下内容替换 admin.site.register(Question):

polls/admin.py

from django.contrib import admin

from .models import Question


class QuestionAdmin(admin.ModelAdmin):
    fields = ['pub_date', 'question_text']

admin.site.register(Question, QuestionAdmin)

以上修改使得 "Publication date" 字段显示在 "Question" 字段之前:

Python3.0 Django2.0.4 搭建项目(六)_第2张图片
image.png

添加关联的对象

好了,现在我们有了投票的后台页。不过,一个 Question 有多个 Choice,但后台页却没有显示多个选项。

我们有两个方法可以解决这个问题。第一个就是仿照我们向后台注册 Question 一样注册 Choice 。

polls/admin.py

from django.contrib import admin

from .models import Choice, Question
# ...
admin.site.register(Choice)

现在 "Choices" 在 Django 后台页中是一个可用的选项了。“添加选项”的表单看起来像这样:

Python3.0 Django2.0.4 搭建项目(六)_第3张图片
image.png

这个方法我们只有一个投票,如果我们需要创建多个投票选项,就可以用另外一种方式:

polls/admin.py

from django.contrib import admin
from .models import Choice, Question


class ChoiceInline(admin.StackedInline):
    model = Choice
    extra = 3


class QuestionAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,               {'fields': ['question_text']}),
        ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
    ]
    inlines = [ChoiceInline]

admin.site.register(Question, QuestionAdmin)

这会告诉 Django:“Choice 对象要在 Question 后台页面编辑。默认提供 3 个足够的选项字段。

Python3.0 Django2.0.4 搭建项目(六)_第4张图片
image.png

我们还可以直接改变他的样式,Django 提供了一种表格式的单行显示关联对象的方法。我们只需按如下形式修改 ChoiceInline 申明:

polls/admin.py

class ChoiceInline(admin.TabularInline):
    #...

通过 TabularInline(替代StackedInline ),就可以实现单行显示样式。

Python3.0 Django2.0.4 搭建项目(六)_第5张图片
image.png

自定义后台更改列表

为了能更直观的看到我们后台有多少个选项,我们可以通过list_display 来实现:

polls/admin.py
class QuestionAdmin(admin.ModelAdmin):
    # ...
    list_display = ('question_text', 'pub_date', 'was_published_recently')

修改后的列表如下:


Python3.0 Django2.0.4 搭建项目(六)_第6张图片
image.png

我们可以在右侧添加一个过滤器,来实现一些快速过滤:
再次编辑文件 polls/admin.py,优化 Question 变更页:过滤器,使用 list_filter。将以下代码添加至 QuestionAdmin:

list_filter = ['pub_date']
Python3.0 Django2.0.4 搭建项目(六)_第7张图片
image.png

为了更方便操作,我们还可以添加一个简单的搜索功能

search_fields = ['question_text']
Python3.0 Django2.0.4 搭建项目(六)_第8张图片
image.png

你可能感兴趣的:(Python3.0 Django2.0.4 搭建项目(六))