
接续前面 week4 的部分,首先建立环境并使用 week5 资料夹,并且启动虚拟环境
前置准备
cd C:\django_projects
mkdir week5
cd week5
python -m venv env
.\env\Scripts\activate.bat


下载并将 week4 的成果放到 week5 目录底下,点我下载
接着安装 django
pip install django

启动 django 伺服器并且测试功能是否正常,帐密为
- 帐号: admin
- 密码: 123456
cd mysite
python manage.py runserver


使用 Ctrl + C 关闭启动的伺服器
自定义管理介面
开启 VSCODE
code .
原本的预设介面是日期在下面,现在要把它更改为日期在上面
开启 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)现在呈现顺序就会变成日期在下面
如果觉得这样还不够直觉的话,我们可以把它分群组
开启 polls/admin.py ,贴上以下的程式码
from django.contrib import admin
from .models import Question
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
('问 题', {'fields': ['question_text']}),
('日期资讯', {'fields': ['pub_date']}),
]
admin.site.register(Question, QuestionAdmin)加入选项
开启 polls/admin.py ,贴上以下的程式码
from django.contrib import admin
from .models import Choice, Question
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
('问 题', {'fields': ['question_text']}),
('日期资讯', {'fields': ['pub_date']}),
]
admin.site.register(Question, QuestionAdmin)
admin.site.register(Choice)储存并且查看后台,会发现多了一个 Choice
按下右上角的 「新增 CHOICE」,并且按照下图填写,好了之后按下储存

开启以下网址查看 http://127.0.0.1:8000/polls/2/
但是有没有感觉差了一点东西? 对,问题跟选项没办法一起关联。
继续开启 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 = [
('问 题', {'fields': ['question_text']}),
('日期资讯', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
inlines = [ChoiceInline]
admin.site.register(Question, QuestionAdmin)开启 http://127.0.0.1:8000/admin/polls/question/add/,新增一个问题

开启「今天中午吃什么?」问题,将选项新增「牛肉汤」与「肯德基」

按下储存,开启 http://127.0.0.1:8000/polls/2/ 查看投票选项
但是这样子的呈现方式,当需要新增大量选项的时候,就会发现占用了很多萤幕空间
开启 polls/admin.py ,并且修改成以下程式码
让choice子选项变成表格式的呈现方式,更方便修改choice资料
from django.contrib import admin
from .models import Choice, Question
class ChoiceInline(admin.TabularInline):
model = Choice
extra = 3
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
('问 题', {'fields': ['question_text']}),
('日期资讯', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
inlines = [ChoiceInline]
admin.site.register(Question, QuestionAdmin)
在问题总览页面显示更多资讯
现在的问题总览页面是长这样
修改 polls/admin.py ,让问题总览页面呈现更多的栏位
from django.contrib import admin
from .models import Choice, Question
class ChoiceInline(admin.TabularInline):
model = Choice
extra = 3
class QuestionAdmin(admin.ModelAdmin):
list_display = ('question_text', 'pub_date', 'was_published_recently')
fieldsets = [
('问 题', {'fields': ['question_text']}),
('日期资讯', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
inlines = [ChoiceInline]
admin.site.register(Question, QuestionAdmin)
过滤、查询功能
当你的问题有1000、2000 甚至更多,该如何快速找到需要的问题?
修改 polls/admin.py,加入日筛选器
from django.contrib import admin
from .models import Choice, Question
class ChoiceInline(admin.TabularInline):
model = Choice
extra = 3
class QuestionAdmin(admin.ModelAdmin):
list_filter = ['pub_date']
list_display = ('question_text', 'pub_date', 'was_published_recently')
fieldsets = [
('问 题', {'fields': ['question_text']}),
('日期资讯', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
inlines = [ChoiceInline]
admin.site.register(Question, QuestionAdmin)
现在它旁边有可以用日来过滤资讯了,那么我想搜寻问题的内容呢?
继续修改 polls/admin.py 档案
from django.contrib import admin
from .models import Choice, Question
class ChoiceInline(admin.TabularInline):
model = Choice
extra = 3
class QuestionAdmin(admin.ModelAdmin):
search_fields = ['question_text']
list_filter = ['pub_date']
list_display = ('question_text', 'pub_date', 'was_published_recently')
fieldsets = [
('问 题', {'fields': ['question_text']}),
('日期资讯', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
inlines = [ChoiceInline]
admin.site.register(Question, QuestionAdmin)
- 受保护的内容: NAS 版 Mathbot 管理网站与 Linebot 启动方法 - 2024 年 11 月 15 日
- Realtime 啥鬼的 - 2021 年 6 月 15 日
- nodejs 数学游戏 - 2021 年 6 月 8 日








在〈网站开发专题 week5 自订管理介面〉中有 1 则留言