【Django】-1- 开发项目搭建

发布于:2025-08-01 ⋅ 阅读:(21) ⋅ 点赞:(0)

 一、PDM + Django 搭建项目👇

🎯 核心目标

用 PDM(更现代的 Python 包管理工具),快速创建并管理 Django 项目(Web 框架),让开发流程更丝滑✨

🧩 分步拆解

1. 创建项目

用 PDM 初始化环境 + 安装 Django + 创建 Django 项目结构

  • pip install pdm:先装 PDM 包管理工具 🛠️
  • pdm init:初始化 PDM 项目,生成 pyproject.toml(项目配置文件) 🔧
  • pdm add django:用 PDM 装 Django 依赖 📦
  • pdm run django-admin startproject Tesla ./:通过 PDM 执行命令,创建 Django 项目(命名 Tesla) 🏗️

2. 启动 Django 服务

项目创建好后,用 manage.py 启动开发服务器

  • python manage.py runserver:启动 Django 本地服务 🚀
  • 输出里的 http://127.0.0.1:8000/ 就是访问地址啦~ 浏览器打开就能看项目前台 🌐
  • 提示 18 unapplied migrations?别慌!这是 Django 内置表还没创建,后面用 migrate 命令解决 🐛

3. 项目结构梳理

从 “新建目录→虚拟环境→配置文件→Django 核心文件” 一步步搭架子

  • PyCharm 项目:新建文件夹 + 虚拟环境(隔离项目依赖) 🌿
  • PDM 项目:生成 pyproject.toml(记录依赖、脚本等配置) 📄
  • Django 项目:创建同名包(如 Tesla 文件夹) + manage.py(Django 命令入口) ⚙️

4. 自定义管理命令

用 PDM 的 scripts 配置,把常用 Django 命令 “封装” 成快捷指令,不用每次敲长命令啦~

toml

[tool.pdm.scripts]
init = { composite = [
    "makeM",
    "M",
    "createadmin",
]}

makeM = 'python manage.py makemigrations'

M = 'python manage.py migrate'

R = 'python manage.py runserver' # --noreload

T = 'python manage.py test'

createadmin = '''python manage.py shell -c "from django.contrib.auth.models import User; User.objects.create_superuser('admin', 'admin@example.com', 'adminpass')"'''
  • 在 pyproject.toml 里加 [tool.pdm.scripts]
    • init:组合多个命令(makemigrations 做迁移文件、migrate 执行迁移、createsuperuser 建管理员) 🔄
    • makeM/M/createadmin:分别对应单个 Django 命令(生成迁移、执行迁移、创建超级用户) 🛠️
    • 效果:以后敲 pdm run init,就能一键执行多个操作,超方便! 🚀

5. 快捷命令 & 项目预览
  • PDM 快捷指令
    • pdm run init:一键初始化(建表 + 超级用户) 🔧
    • pdm run R:启动 Django 服务(替代 python manage.py runserver) 🚀
    • pdm run T:执行 Django 测试(python manage.py test) 🧪
  • 项目访问
    • 前台:http://127.0.0.1:8000/(Django 默认首页) 🌐
    • 后台:http://127.0.0.1:8000/admin/(管理员入口) 🔐
    • 默认账号:admin/adminpass 👑

💻 创建 App

bash

python manage.py startapp yifei

  • 作用:用 Django 内置命令 startapp,创建一个名为 yifei 的 App 文件夹及基础结构 🏗️
  • 生成的文件:会在项目里新增 yifei/ 目录,包含 models.py(写数据库模型)、views.py(写视图逻辑)、apps.py(App 配置)等文件,这些是开发功能模块的基础文件~

注册 App(为啥要设置)

“在项目的设置中,把 yifei 加载到安装列表” → 要修改 Django 项目的 settings.py 文件:

INSTALLED_APPS = [
    # 其他已有的 App...
    'yifei',  # 把这行加上,告诉 Django 识别并启用这个 App
]

  • 作用:Django 项目像一个 “大容器”,INSTALLED_APPS 是 “已安装 App 清单” 📜
  • 必须注册的原因:只有加到这里,Django 才会加载 yifei 里的模型、路由、静态文件等,比如执行数据库迁移、访问 App 里的视图,都得先注册!

二、视图和路由 

视图是干啥的?👉 网站的 “小管家”

视图(View)就像你点外卖时,商家接到订单、准备餐品、再送餐的过程~

  • 👉 接收请求:用户用浏览器访问网址(比如 http://xxx/help ),这就是给 Django 发了个 HTTP 请求,视图会 “接住” 这个请求 👐
  • 👉 处理并生成响应:视图收到请求后,会处理逻辑(比如拼一个 hello world 内容),然后返回 HTTP 响应(把内容给用户看),就像商家做好餐、打包好给你送过来~

# 1. 定义视图函数:def 是“定义函数”的关键字,help 是函数名(你取的),request 是“请求对象”(装着用户的访问信息)
def help(request):  
    # 2. 准备响应内容:拼一个简单的字符串,相当于准备要给用户的“餐品”
    html = "hello world"  
    # 3. 返回响应:用 HttpResponse 把内容包起来,送给用户! HttpResponse 是 Django 帮我们生成响应的工具~
    return HttpResponse(html)  

  • request:用户的 “订单” 信息都在这儿(比如访问时间、带的参数等)📦
  • HttpResponse:把内容变成 “能送出去的外卖”,让浏览器能显示出来 🚀

把 Django 项目想成一家 “网站餐厅” 🍴:

  • 👉 用户访问网址 = 点外卖(发请求)
  • 👉 视图函数 = 后厨 “做菜的厨师”👨🍳:接到订单(request)→ 做内容(html = "hello world")→ 打包好(HttpResponse)→ 给用户送餐(返回响应)
  • 👉 最后用户浏览器显示 hello world = 收到外卖,开心开吃~

路由的作用

路由(URL 配置)就是 “网址和视图的连接器” 🔗:

  • 用户访问 http://xxx/hello123 → 路由匹配到 hello123 → 找到对应的视图函数(比如 hello)→ 执行函数返回内容给用户

简单说:路由决定了 “访问哪个网址,执行哪个视图” ,是 Django 里 “网址导航” 的关键~

项目主路由(Tesla/urls.py

项目的 urls.py 是 总入口 ,负责把 App 的路由 “包含” 进来:

from django.contrib import admin
from django.urls import path, include  # include 用来“包含”其他 App 的路由

urlpatterns = [
    path("admin/", admin.site.urls),  # 后台管理的路由(默认自带)
    # 重点在这行!空字符串 '' 表示“根路径下的子路由交给 yifei.urls 处理”
    path('', include("yifei.urls"))  
]

  • path('', include("yifei.urls")):意思是 “只要访问的网址是根路径下的(比如 http://xxx/xxx ),就去 yifei 这个 App 的 urls.py 里找具体的路由规则” 🌳

2. 图 2:App 级路由(yifei/urls.py

每个 App 可以有自己的 urls.py ,负责配置 当前 App 内部的 URL 和视图的对应关系 :

from django.urls import path
# 从当前 App 的 views.py 导入视图函数 hello(假设你在 yifei/views.py 里写了 hello 函数)
from .views import hello  

urlpatterns = [
    # 配置:访问 'hello123' 这个路径时,执行 hello 视图函数
    path('hello123', hello),  
]

  • path('hello123', hello):当用户访问 http://xxx/hello123 → 触发 hello 视图函数 → 返回内容 🌍

3. 图 3:路由的总结 + 重启服务
  • 创建路由:就是写好 App 内的 urls.py ,配置 URL 和视图的对应关系(如 path('hello123', hello) )
  • 重启程序:因为修改了路由配置,需要重启 Django 服务让改动生效~
    • 用 PDM 的话,执行 pdm run R(对应 python manage.py runserver )重启服务 🚀

完整流程梳理(超清晰版)

  1. 用户访问网址:比如 http://127.0.0.1:8000/hello123
  2. 项目主路由匹配Tesla/urls.py 里的 path('', include("yifei.urls")) → 发现是空路径,交给 yifei.urls 处理
  3. App 路由匹配:yifei/urls.py 里的 path('hello123', hello) → 匹配到 hello123 ,执行 hello 视图函数
  4. 视图返回内容hello 函数处理逻辑(比如返回 hello world )→ 内容返回给用户浏览器

举个🌰(用户访问流程)

假设项目启动后,本地地址是 http://127.0.0.1:8000 :

  • 用户在浏览器输入 http://127.0.0.1:8000/hello123
  • 路由依次匹配:主路由 → App 路由 → 找到 hello 视图 → 执行函数 → 用户看到 hello 视图返回的内容~

为啥要分 “项目路由” 和 “App 路由”?

  • 解耦:每个 App 自己管自己的路由,项目主路由只负责 “分配任务”,代码更清晰 ✨
  • 可扩展:比如再加一个 blog App ,只需要在主路由里加 path('blog/', include('blog.urls')) ,让 blog 自己管理内部路由即可~

这样拆分后,整个路由系统就像 “大树的枝干” :主路由是树干,App 路由是树枝,每个树枝上的叶子是具体的视图~  😊

 

  # Django