【Django】-11- 后台管理界面定制
一、项目基础配置(settings.py)
文件位置:Django 项目根目录下的 settings.py(整个项目的核心配置文件)
# 1. 语言设置(简体中文)
LANGUAGE_CODE = "zh-hans" # 2. 时区设置(北京时间)
TIME_ZONE = "Asia/Shanghai" # 3. 数据库时区(关闭时区转换)
USE_TZ = False
作用:
LANGUAGE_CODE:让 Django 后台、Admin 等页面显示 简体中文 。TIME_ZONE:存时间、显示时间用 北京时间 。USE_TZ:数据库存时间时,不做时区转换(简单场景够用,复杂场景可改True)。
二、App 配置(apps.py + __init__.py)
1. apps.py(App 目录下的配置)
文件位置:对应 App 文件夹(比如 beifan 文件夹)里的 apps.py
from django.apps import AppConfigclass BeifanConfig(AppConfig):default_auto_field = "django.db.models.BigAutoField"# App 的“机器名”(不要改,和文件夹名一致)name = "beifan" # App 在 Django 后台显示的“别名”(中文友好名)verbose_name = '北凡的第一个App'
2. __init__.py(App 目录下的初始化文件)
文件位置:同样在 App 文件夹(beifan 文件夹)里的 __init__.py
# 告诉 Django:用我们自定义的 BeifanConfig
default_app_config = "beifan.apps.BeifanConfig"
作用:让 Django 后台把这个 App 显示成 verbose_name 里的中文名(比如 “北凡的第一个 App”),不再显示默认的英文 beifan 。
三、Model 与 Admin 配置(models.py + admin.py)
1. models.py(Model 定义,App 目录下)
文件位置:App 文件夹(beifan 文件夹)里的 models.py
from django.db import modelsclass Feedback(models.Model):# 假设的字段(示例)quality = models.IntegerField("质量分")attitude = models.IntegerField("态度分")speed = models.IntegerField("速度分")text = models.TextField("评价内容")anonymous = models.BooleanField("是否匿名", default=False)user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name="用户")class Meta:# 后台显示的表名(单复数统一)verbose_name_plural = verbose_name = '用户评价'
类种类 Meta和业务逻辑无关 就是改个别名
2. admin.py(Admin 注册,App 目录下)
文件位置:App 文件夹(beifan 文件夹)里的 admin.py
from django.contrib import admin
from .models import Feedback@admin.register(Feedback)
class FeedbackAdmin(admin.ModelAdmin):# 列表页显示哪些字段list_display = ("id", "quality", "attitude", "speed", "text", "anonymous", "user") # 可筛选的字段(按匿名、用户筛)list_filter = ("anonymous", "user") # 可搜索的字段(搜 id、评价内容等)search_fields = ("id", "quality", "attitude", "speed", "text") # 点哪些字段跳详情页list_display_links = ("text", "user") # 每页显示条数list_per_page = 10 # (可选)列表页直接编辑的字段# list_editable = ("quality", "attitude", "speed")
作用:定制 Django 后台列表页的 展示、筛选、搜索、跳转、分页 ,让运营 / 管理员管理数据更高效。
四、前台 & 路由配置(urls.py)
项目根 urls.py(项目根目录下)
文件位置:Django 项目根目录下的 urls.py(和 settings.py 同级)
from django.contrib import admin
from django.urls import path, includeurlpatterns = [# 自定义 Admin 路径(隐藏默认 /admin/ )path("admin_by_beifan_127_0_0_1/", admin.site.urls), # 根路径(访问域名/ 时),走 beifan App 的 urls.pypath("", include("beifan.urls")),
]# (可选)DEBUG 配置也在 settings.py 里
# settings.py 中:DEBUG = False
作用:
admin路径:隐藏默认的/admin/,提升后台安全性。- 根路径分发:让项目首页(
/)交给beifanApp 的路由处理,实现业务页面访问。
五、静态文件(settings.py + 部署配置)
1. settings.py(项目根目录下)
# 关闭 DEBUG 后,Django 不再自动处理静态文件
DEBUG = False # 静态文件收集目录(部署时用)
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
# 静态文件 URL 前缀(前端访问时的路径)
STATIC_URL = '/static/'
2. 部署操作
- 执行
python manage.py collectstatic,把所有 App 的静态文件(CSS、JS 等)收集到STATIC_ROOT目录 。 - 让 Nginx 或其他服务器 直接托管
STATIC_ROOT里的文件 ,保证前端样式正常加载。
Django基础回顾
0. 管理命令(manage.py)
作用:Django 项目的 “瑞士军刀”,敲命令必用它!
- 常用命令举例:
python manage.py runserver🚀 启动开发服务器,本地预览项目。python manage.py migrate🗄️ 执行数据库迁移(同步 Model 到数据库)。python manage.py createsuperuser👑 创建后台管理员账号。
- 一句话:所有 Django 命令都靠
manage.py触发,开发 / 运维必备 !
1. 项目配置(settings.py)
作用:项目的 “总开关”,配置语言、数据库、静态文件、App 注册… 啥都能改!
# 正确导入 Django 配置的方式 ✅
from django.conf import settings # 配置特点:
# 1. 自动过滤非大写内容 🔍 → 只有大写变量(如 DEBUG、TIME_ZONE )才会被识别为配置。
# 2. 能获取默认值 ↘️ → 没手动改的配置,用 Django 内置默认值。
# 3. 避免加载出错 🛡️ → 规范写法让配置加载更稳定。
- 核心地位:项目怎么跑、功能开哪些,全看
settings.py,必改文件!
2. 数据库(settings.py + models.py)
(1)settings.py 里配置数据库链接 🔗
DATABASES = {"default": {# 用 SQLite3 数据库(小项目/开发常用)"ENGINE": "django.db.backends.sqlite3", # 数据库文件存在项目根目录的 db.sqlite3"NAME": BASE_DIR / "db.sqlite3", }
}
- 其他选项:还能配 MySQL、PostgreSQL 等,改
ENGINE和连接信息就行。
(2)models.py 里定义数据库表结构 🗄️
文件位置:每个 App 文件夹里的 models.py(如 beifan/models.py )
from django.db import models# 定义一张表:用户评价 Feedback
class Feedback(models.Model):# 字段 = 数据库列,类型、约束都在这定义quality = models.IntegerField("质量分") text = models.TextField("评价内容") # ... 其他字段# 作用:Django 通过 Model 自动生成数据库表,不用手写 SQL !
- 核心逻辑:用 Python 类定义数据库表结构 ,执行
migrate命令就能同步到数据库,超方便~
3. 后台管理(admin.py)
文件位置:每个 App 文件夹里的 admin.py(如 beifan/admin.py )
作用:定制 Django 后台管理界面,让管理员能可视化操作数据库!
from django.contrib import admin
from .models import Feedback # 导入定义的 Model# 注册 Model 到后台,并定制显示
@admin.register(Feedback)
class FeedbackAdmin(admin.ModelAdmin):# 列表页显示哪些字段list_display = ("id", "quality", "text") # 可以搜索的字段search_fields = ("text",) # ... 更多定制(参考之前的 Admin 配置)
- 效果:后台变成 “可视化表格” ,管理员能直接增删改查数据,不用写 SQL !
4. 视图(views.py)
文件位置:每个 App 文件夹里的 views.py(如 beifan/views.py )
作用:处理用户请求,返回响应(页面、数据等),相当于 “业务逻辑中心”。
from django.shortcuts import render
from django.http import HttpResponse# 定义一个视图函数:处理用户请求,返回内容
def index(request):# 1. 接收请求参数 🔍 → request 里有用户传的参数(如 URL 里的 ?name=xxx )# 2. 处理逻辑 ↘️ → 查数据库、调算法、拼数据...# 3. 返回响应 ✅ → 可以是 HTML 页面(render)、字符串(HttpResponse)、JSON 等。return HttpResponse("Hello, Django!")
- 核心逻辑:“请求(参数) → 处理(函数) → 响应(返回值)” 的流程控制 ,决定用户访问 URL 时看到啥内容。
5. 路由(urls.py)
文件位置:项目根目录 / 每个 App 里的 urls.py(如 beifan/urls.py )
作用:把 URL 地址和视图函数绑定 ,用户访问某个 URL 时,知道该执行哪个视图。
from django.urls import path
from . import viewsurlpatterns = [# 访问 /feedback/ 时,执行 views 里的 feedback 函数path("feedback/", views.feedback, name="feedback"),
]
- 项目根
urls.py还会用include把 App 路由 “合并” 进来:
from django.urls import path, includeurlpatterns = [# 后台管理路径path("admin/", admin.site.urls), # 把 /beifan/ 开头的 URL ,交给 beifan App 的 urls.py 处理path("beifan/", include("beifan.urls")),
]
- 核心逻辑:URL 导航地图 ,用户访问不同地址,对应到不同视图处理。
总结:Django 核心流程地图 🗺️
- 用户访问 URL → 路由
urls.py找到对应的视图views.py。 - 视图
views.py里处理逻辑(查models.py数据库、调函数…)。 - 数据库操作靠
settings.py配置的连接,和models.py定义的表结构。 - 后台管理
admin.py让管理员可视化操作数据库表。 - 所有命令(启动、迁移…)靠
manage.py执行。
整个流程像一条 “用户请求 → 路由 → 视图 → 数据库 → 响应” 的流水线,每个文件各司其职~
用户访问 🔗 → urls.py 指路 🗺️ → views.py 干活 🛠️ → models.py 操作数据库 🗄️ → admin.py 后台管理 👑 → settings.py 总控 ⚙️ → manage.py 执行命令 🚀
