前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django 自定义后台

Django 自定义后台

作者头像
小孙同学
发布2022-01-17 19:36:20
6150
发布2022-01-17 19:36:20
举报

个人学习笔记,参考 django 官方文档:https://docs.djangoproject.com/zh-hans/3.2/

一、自定义后台

  Django 提供了相应的接口供我们自定义 Django 自带的后台管理应用。

  比如,这是 Django 后台增加 Question 的一个表单,我们现在需要把Question textDate 的顺序换一下。该怎么做呢?

polls这是我们自己写的应用,我们是在admin.py 里注册到后台的,对应的后台配置也在这里。

polls/admin.py

代码语言:javascript
复制
# 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。

  只有两个字段,我们可以调一下字段的顺序,如果有十个字段呢?

  我们可以为他们分组,像这样。

代码语言:javascript
复制
class QuestionAdmin(admin.ModelAdmin):
    fieldsets = [
        (None, {'fields': ['question_text']}),
        ('时间信息', {'fields': ['pub_date']}),
    ]

  于是他就会变成这个样子。

二、添加关联的对象

  一个投票对应了多个选项,但是后台默认没有显示,我们如何在后台关联数据表呢?

  我们在之前就把 Choice 表给注册了,似乎已经关联数据表了,但这样非常的低效,高效的设计是我们在创建一个新的投票问题时就设置好他的选项。

polls/admin.py

代码语言:javascript
复制
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

代码语言:javascript
复制
class ChoiceInline(admin.TabularInline):
    #...

  于是,就变成了这样。

  当然,Django 官方文档还对展示页面等等进行了自定义,这块我没继续学习!

三、Simple UI 快速上手

  根据 Django 的官方文档,你完全可以自定义后台的各各方面!但是,已经有人给我们做好了轮子,我们直接用就可以了。

  这是 simple ui 的官方文档:https://simpleui.72wo.com/docs/simpleui/

  他是一个基于 Django Admin 的现代化主题,配合 Element-UI 和 Vue,让页面更具现代化。

安装

  是用 pip 进行安装,先激活虚拟环境,安装在虚拟环境里。

代码语言:javascript
复制
pip install django-simpleui

日志如下

代码语言:javascript
复制
(venv) PS J:\study_django\venv\Scripts> 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_django\venv\lib\site-packages (from django-simpleui) (3.2.9)
Requirement already satisfied: asgiref<4,>=3.3.2 in j:\study_django\venv\lib\site-packages (from django->django-simpleui) (3.4.1)
Requirement already satisfied: pytz in j:\study_django\venv\lib\site-packages (from django->django-simpleui) (2021.3)
Requirement already satisfied: sqlparse>=0.2.2 in j:\study_django\venv\lib\site-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:\users\lenovo\appdata\local\pip\cache\wheels\77\4c\93\599300b3823726a1922e2a1f929a3733190e3837b51525e38c
Successfully built django-simpleui
Installing collected packages: django-simpleui
Successfully installed django-simpleui-2022.1

挂载项目

  这是一个基于 Django Admin 的应用,我们需要把他挂载到我们的项目中。

重启项目

代码语言:javascript
复制
python manage.py runserver

成功

  你可以继续探索下这个后台管理界面,他比自带的后台更加现代化。

  其次我们也可以魔改这个主题,具体请参考Simple UI的官方文档。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、自定义后台
  • 二、添加关联的对象
  • 三、Simple UI 快速上手
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档