当前位置: 首页 > news >正文

【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/ ,提升后台安全性。
  • 根路径分发:让项目首页(/ )交给 beifan App 的路由处理,实现业务页面访问。

 

五、静态文件(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 核心流程地图 🗺️

  1. 用户访问 URL → 路由 urls.py 找到对应的视图 views.py 。
  2. 视图 views.py 里处理逻辑(查 models.py 数据库、调函数…)。
  3. 数据库操作靠 settings.py 配置的连接,和 models.py 定义的表结构。
  4. 后台管理 admin.py 让管理员可视化操作数据库表。
  5. 所有命令(启动、迁移…)靠 manage.py 执行。

整个流程像一条 “用户请求 → 路由 → 视图 → 数据库 → 响应” 的流水线,每个文件各司其职~


用户访问 🔗 → urls.py 指路 🗺️ → views.py 干活 🛠️ → models.py 操作数据库 🗄️ → admin.py 后台管理 👑 → settings.py 总控 ⚙️ → manage.py 执行命令 🚀

 

http://www.dtcms.com/a/314800.html

相关文章:

  • [机器学习]02-基于贝叶斯决策的鸢尾花数据集分类
  • 云原生攻防6(Kubernetes扩展知识)
  • 并发编程常用工具类(下):CyclicBarrier 与 Phaser 的协同应用
  • 政府财政行业云原生转型之路
  • 关于解决WinRiver项目动态XmlElement的序列化与反序列化的问题
  • 基于Java的AI工具和框架
  • PyTorch生成式人工智能(25)——基于Transformer实现机器翻译
  • spring boot开发中的资源处理等问题
  • RTOS如何保证实时性
  • 深圳南柯电子|电驱动系统EMC测试整改:“诊断-治疗-预防”方案
  • HTML5的新特性
  • 上位机知识篇---令牌
  • 如何选择合适的政务文本检测工具?
  • go 语言常见问题(2)
  • 宝塔面板安装WordPress教程:10分钟一键部署搭建个人博客 (2025)
  • 聊聊web前端的缓存问题
  • 金融专业高分简历撰写指南
  • k8s集群
  • 网络与信息安全有哪些岗位:(5)网络安全工程师
  • SpringCloud (4) 分布式事务
  • Western Blot(蛋白质免疫印迹)--实验操作015
  • 室内液体撒漏泄漏识别分割数据集labelme格式2576张1类别
  • 朴素贝叶斯(Naive Bayes)完整解析:概率论经典算法
  • Scrapy 工作流程深度解析:引擎驱动的完美协作
  • API接口的应用及重要性
  • Nestjs框架: @nestjs/config 配置模块详解与实践
  • 鸿蒙开发-端云一体化--云存储
  • Python-初学openCV——图像预处理(七)——模板匹配、霍夫变换
  • 注解知识学习
  • 腾讯混元重磅开源:四款小尺寸模型全面发布