Django 提供了基於 web 的管理工具。
可通過命令來創建超級用戶:
python manage.py createsuperuser
python manage.py runserver
通過訪問 http://127.0.0.1 :8000/admin 即可進入後臺。
管理頁面的功能強大,可以通過代碼自定義頁面顯示。部分代碼如下:
# project/admin.py
from django.contrib import admin
from .models import *
from django.contrib.auth.models import User
from django.utils.html import format_html
admin.site.site_header = '作業管理系統'
admin.site.site_header = '作業管理系統'
empty_value_display = "空值"
admin_order_field = ('modified',)
class StudentAdmin(admin.ModelAdmin):
'''設置列表可顯示的字段'''
list_display = ('name','gender','created','modified',)
'''設置過濾選項'''
# list_filter = ('',)
'''每頁顯示條目數'''
list_per_page = 5
'''設置可編輯字段'''
list_editable = ()
'''按日期月份篩選'''
date_hierarchy = 'created'
'''按發佈日期排序'''
ordering = ('-created',)
'''下拉菜單修改'''
# raw_id_fields = ('',)
# readonly_fields = ('',)
'''設置帶鏈接字段'''
# list_display_links = ('',)
'''可搜索字段'''
search_fields = ('name',)
'''多對多字段'''
# filter_horizontal = ('',)
admin.site.register(Student, StudentAdmin)
class CourseInline(admin.TabularInline):
model = Course
fields = ('cname', 'classes', 'opened',)
class TeacherAdmin(admin.ModelAdmin):
list_display = ('name','gender','created','modified',)
list_per_page = 5
list_editable = ()
date_hierarchy = 'created'
ordering = ('-created',)
inlines = [
CourseInline,
]
search_fields = ('name',)
admin.site.register(Teacher, TeacherAdmin)
class HomeworkInline(admin.TabularInline):
model = Homework
fields = ('title', 'status','group',)
class CourseAdmin(admin.ModelAdmin):
list_display = ('cname','classes','opened',)
list_filter = ('opened',)
list_per_page = 5
list_editable = ('opened',)
inlines = [
HomeworkInline,
]
raw_id_fields = ('teacher',)
search_fields = ('cname',)
admin.site.register(Course, CourseAdmin)
class HandinInline(admin.TabularInline):
model = Handin
fields = ('course','author','score',)
class HomeworkAdmin(admin.ModelAdmin):
list_display = ('title','status','created','modified','group','handin_count')
list_filter = ('status','published',)
list_per_page = 5
list_editable = ('status',)
inlines = [
HandinInline,
]
raw_id_fields = ('course',)
list_display_links = ('title',)
date_hierarchy = 'modified'
ordering = ('-modified',)
search_fields = ('title',)
def handin_count(self,obj):
count = len(obj.handin.all())
if count:
return count
else:
return format_html(
'<span style="color:red;">暫無人提交</span>',
)
handin_count.short_description = '已提交作業數量'
'''自定義actions'''
actions = ['make_published']
def make_published(self, request, queryset):
queryset.update(status='p')
make_published.short_description = "發佈所選作業"
admin.site.register(Homework, HomeworkAdmin)
直接刷新頁面即可,效果圖如下: