一、项目基础配置(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 核心流程地图 🗺️
- 用户访问 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 执行命令 🚀