【Django】-11- 后台管理界面定制

发布于:2025-08-06 ⋅ 阅读:(18) ⋅ 点赞:(0)

一、项目基础配置(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 AppConfig

class 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 models

class 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, include

urlpatterns = [
    # 自定义 Admin 路径(隐藏默认 /admin/ )
    path("admin_by_beifan_127_0_0_1/", admin.site.urls),  
    # 根路径(访问域名/ 时),走 beifan App 的 urls.py
    path("", 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 views

urlpatterns = [
    # 访问 /feedback/ 时,执行 views 里的 feedback 函数
    path("feedback/", views.feedback, name="feedback"),  
]

  • 项目根 urls.py 还会用 include 把 App 路由 “合并” 进来:
from django.urls import path, include

urlpatterns = [
    # 后台管理路径
    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 执行命令 🚀

 


网站公告

今日签到

点亮在社区的每一天
去签到