文章目录个人学习笔记,参考 django 官方文档:https://docs.djangoproject.com/zh-hans/3.2/
本文第一时间发表在我的个人博客上,欢迎访问:https://sunguoqi.com/2021/12/14/Django_03/
- 一、自定义后台
- 二、添加关联的对象
- 三、Simple UI 快速上手
Django 提供了相应的接口供我们自定义 Django 自带的后台管理应用。
比如,这是 Django 后台增加 Question 的一个表单,我们现在需要把Question text 和 Date的顺序换一下。该怎么做呢?
polls这是我们自己写的应用,我们是在admin.py 里注册到后台的,对应的后台配置也在这里。
polls/admin.py
# django的接口,默认已经引入。 from django.contrib import admin # 引入我们自己写的数据表(类) from .models import * # 引用默认的API来自定义后台。 class QuestionAdmin(admin.ModelAdmin): # 字段 fields = ['pub_date', 'question_text'] # 注册以下就可以交给django后台管理啦! # Register your models here. # 需要改一下配置,把配置的类传进去 admin.site.register(Question, QuestionAdmin) admin.site.register(Choice)
这样就改好了,这是一个很简单的尝试,当然,Django 还提供了其他的 API。
只有两个字段,我们可以调一下字段的顺序,如果有十个字段呢?
我们可以为他们分组,像这样。
class QuestionAdmin(admin.ModelAdmin): fieldsets = [ (None, {'fields': ['question_text']}), ('时间信息', {'fields': ['pub_date']}), ]
于是他就会变成这个样子。
一个投票对应了多个选项,但是后台默认没有显示,我们如何在后台关联数据表呢?
我们在之前就把 Choice 表给注册了,似乎已经关联数据表了,但这样非常的低效,高效的设计是我们在创建一个新的投票问题时就设置好他的选项。
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)
有点小问题。表单占据了大量的屏幕区域来显示所有关联的 Choice 对象的字段。我们可以把继承的类改成TabularInline
class ChoiceInline(admin.TabularInline): #...
于是,就变成了这样。
当然,Django 官方文档还对展示页面等等进行了自定义,这块我没继续学习!
根据 Django 的官方文档,你完全可以自定义后台的各各方面!但是,已经有人给我们做好了轮子,我们直接用就可以了。
这是 simple ui 的官方文档:https://simpleui.72wo.com/docs/simpleui/
他是一个基于 Django Admin 的现代化主题,配合 Element-UI 和 Vue,让页面更具现代化。
安装 :
是用 pip 进行安装,先激活虚拟环境,安装在虚拟环境里。
pip install django-simpleui
日志如下 :
(venv) PS J:study_djangovenvscripts> pip install django-simpleui Collecting django-simpleui Downloading django-simpleui-2022.1.tar.gz (2.0 MB) |████████████████████████████████| 2.0 MB 252 kB/s Preparing metadata (setup.py) ... done Requirement already satisfied: django in j:study_djangovenvlibsite-packages (from django-simpleui) (3.2.9) Requirement already satisfied: asgiref<4,>=3.3.2 in j:study_djangovenvlibsite-packages (from django->django-simpleui) (3.4.1) Requirement already satisfied: pytz in j:study_djangovenvlibsite-packages (from django->django-simpleui) (2021.3) Requirement already satisfied: sqlparse>=0.2.2 in j:study_djangovenvlibsite-packages (from django->django-simpleui) (0.4.2) Building wheels for collected packages: django-simpleui Building wheel for django-simpleui (setup.py) ... done Created wheel for django-simpleui: filename=django_simpleui-2022.1-py3-none-any.whl size=2080238 sha256=731a17b568c71d817ce9ad1eeaa35488d1499f0f15cca278e79f46d763f9446c Stored in directory: c:userslenovoappdatalocalpipcachewheels774c93599300b3823726a1922e2a1f929a3733190e3837b51525e38c Successfully built django-simpleui Installing collected packages: django-simpleui Successfully installed django-simpleui-2022.1
挂载项目 :
这是一个基于 Django Admin 的应用,我们需要把他挂载到我们的项目中。
重启项目:
python manage.py runserver
成功:
你可以继续探索下这个后台管理界面,他比自带的后台更加现代化。
其次我们也可以魔改这个主题,具体请参考Simple UI的官方文档。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)