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)
直接刷新页面即可,效果图如下: