前言
Django 是一个用 Python 写的 Web 框架,属于第三方项目,不是 Python 标准库。它自带对象关系映射、后台管理、路由、模板等功能,是很多 Python Web 项目的起点。安装 Django 本身只要一条 pip 命令,但「装完之后怎么把项目跑起来」还有几步标准的脚手架命令。
本文讲清完整流程:装 Django、用django-admin创建项目、用manage.py启动开发服务器、再建一个应用。同时会强调在虚拟环境里安装这个习惯,因为 Django 项目对版本很敏感。
需要声明:本机没有 Python、没有 pip,也没有 Django,本文的所有命令与代码都无法在本环境实际执行,都是按 Django 官方文档整理的写法,请以 Django 官方文档为准。本文不声称任何命令已被执行,也不提供任何执行输出。
一、安装前的准备
Django 对 Python 版本有要求,新版本往往要求较新的 Python。所以顺序是:
- 确认 Python 版本:
python --version。 - 建虚拟环境:
python -m venv venv,激活它。 - 在虚拟环境里安装 Django。
- 验证。
为什么不直接全局装?因为 Django 项目通常依赖特定的 Django 大版本,同时还有一堆第三方应用也对版本有要求。虚拟环境能让不同项目各用各的版本,互不干扰。
还有一点常被忽略:Django 的版本要和你项目里其他依赖一起考虑。生态里有很多第三方应用,各自声明支持的 Django 版本区间。合理的顺序是:先确定要用哪些第三方应用,看它们的版本要求,再倒推出该装哪个 Django 版本。这比「先随便装个最新版」要少踩很多坑。
# 适用于 Python 3.8+(venv 是 3.3+ 自带的模块)
python -m venv venv
# Linux / macOS 激活
source venv/bin/activate# Windows 激活(cmd)
venv\Scripts\activate.bat激活后安装:
# 适用于任意已安装 pip 的 Python 3
python -m pip install django验证是否装好:
# 适用于任意已安装 pip 的 Python 3
python -m django --version用python -m django而不是直接敲django-admin,理由和 pip 一样:明确用哪个解释器,避免装到别处却浑然不觉。
也可以装指定版本:
# 适用于任意已安装 pip 的 Python 3
python -m pip install "django==4.2"具体支持哪些版本、哪个 Python 版本配哪个 Django 版本,以 Django 官方文档的版本支持说明为准。
二、创建项目:startproject
装好之后,用django-admin的一系列子命令来生成项目骨架。最常用的两个是startproject和startapp。
# 适用于任意已安装 Django 的环境
django-admin startproject mysite这会创建一个名为mysite的项目目录,里面有一个manage.py和一个同名的包目录(存放项目级配置,比如设置、路由入口、部署配置等)。
| 命令 | 作用 |
|---|
django-admin startproject 名字 | 新建一个项目骨架 |
python manage.py startapp 名字 | 在项目里新建一个应用 |
python manage.py runserver | 启动开发用服务器 |
python manage.py migrate | 应用数据库迁移 |
python manage.py createsuperuser | 创建后台管理员账号 |
Django 里「项目(project)」和「应用(app)」是两层概念:一个项目可以包含多个应用,每个应用负责一块相对独立的功能。这个划分方式在官方教程里有详细说明。
django-admin是安装 Django 后提供的全局命令,manage.py则是每个项目自带的入口脚本。两者的子命令大多重合,差别在于manage.py会自动把项目目录纳入模块搜索路径并加载该项目的设置。因此「新建项目」这类发生在项目之外的操作适合用django-admin,项目内部的管理操作统一走manage.py。动手改配置之前,还可以先跑一次自检命令python manage.py check,它会检查项目设置与模型是否存在明显问题。
三、启动开发服务器:runserver
进入项目目录后,用manage.py启动:
# 适用于任意已安装 Django 的环境
cd mysite
python manage.py runserverrunserver启动的是开发用的轻量服务器,方便本地调试,官方文档明确说明它不适合生产环境。生产部署要用真正的应用服务器,以官方部署文档为准。
默认情况下它会监听本机的一个端口。如果端口被占用,可以在命令后面指定端口。启动成功后,用浏览器打开本机地址就能看到欢迎页。
在正式使用数据库功能前,通常还要执行一次迁移:
# 适用于任意已安装 Django 的环境
python manage.py migrate然后创建后台管理员:
# 适用于任意已安装 Django 的环境
python manage.py createsuperuser如果只是想确认开发服务器能起来、暂时不碰数据,也可以先跳过迁移直接runserver;但一旦要用到数据库相关的功能(后台、会话等),就必须先完成迁移。另外,开发服务器的自动重载只在开发模式下有意义,部署时应当关掉。
四、一个最小的视图示例
下面这个例子展示视图函数的最小写法,用于理解路由与视图的关系。它需要放进某个应用里并在路由中登记。
# 适用于 Python 3.8+(需要已安装 Django)
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello, Django")路由文件负责把 URL 映射到视图:
# 适用于 Python 3.8+(需要已安装 Django)
from django.urls import path
from . import views
urlpatterns = [
path("hello/", views.hello, name="hello"),
]path的第一个参数是路径模式,第二个是视图函数,name是给这条路由起的名字,便于在别处反向引用。具体参数含义以官方文档为准。开发时改完代码,runserver会自动重载,不需要重启。
常见坑点
1. 全局安装 Django。
- ❌ 直接
pip install django,多个项目共用同一个版本,升级即翻车。 - ✅ 每个项目建虚拟环境,在环境内安装。
2. 命令装到了另一个解释器。
- ❌ 用裸
pip安装,结果运行的python是另一份,import django失败。 - ✅ 统一用
python -m pip install,验证时用python -m django --version。
3. 忘记先迁移数据库。
- ❌ 直接
runserver后访问后台,报数据库表不存在。 - ✅ 先执行
python manage.py migrate。
4. 把runserver用于生产。
- ❌ 以为开发服务器可以直接对外提供服务。
- ✅ 它只用于开发调试,生产部署按官方部署文档来。
5. 用老版本 Python 配新版本 Django。
- ❌ 环境里的 Python 太旧,安装时提示不满足版本要求。
- ✅ 先看官方版本支持说明,必要时升级 Python。
6. 在项目根目录之外执行manage.py。
- ❌ 在别处敲
python manage.py runserver,找不到文件。 - ✅ 先进入含
manage.py的项目目录再执行。
7. 混淆「项目」和「应用」。
- ❌ 把所有代码都写进项目配置包里,结构混乱。
- ✅ 用
startapp建应用,每个应用承担一块功能。
8. 后台超级用户忘了之前设的密码。
- ❌ 想不起密码就不停重试。
- ✅ 用
createsuperuser重新建账号,或用 Django 提供的改密命令处理。
总结
| 步骤 | 命令 |
|---|
| 建环境 | python -m venv venv并激活 |
| 安装 | python -m pip install django |
| 验证 | python -m django --version |
| 建项目 | django-admin startproject 名字 |
| 建应用 | python manage.py startapp 名字 |
| 迁移 | python manage.py migrate |
| 启动 | python manage.py runserver |
Django 的安装与启动是一条固定的流水线:虚拟环境里装包、startproject生成骨架、manage.py驱动日常命令。把这条线上的每一步都做扎实,尤其是「在虚拟环境里、用python -m调用」,后面开发时就能少掉很多莫名其妙的环境问题。涉及具体版本与部署细节,一律以 Django 官方文档为准。