Django 零基础入门:从原理到实践的完整教程1
2025年10月10日 00:36
什么是 Django?为什么选择它?
Django 是一个用 Python 编写的 Web 框架,它遵循 "MTV"(Model-Template-View)架构模式,目的是让开发者能够快速构建安全且可维护的 Web 应用。
它的优势在于:
- 内置了大量功能,无需重复造轮子
- 强大的 ORM(对象关系映射)系统,让你无需直接写 SQL
- 自带管理后台,节省开发时间
- 严格的安全措施,防止常见的 Web 攻击
- 清晰的项目结构,使代码更易于维护
一、环境搭建:从零开始
1. 安装 Python
Django 基于 Python,所以首先需要安装 Python。
- 访问 Python 官网(https://www.python.org/)下载对应系统的安装包
- 安装时勾选 "Add Python to PATH"(非常重要,否则需要手动配置环境变量)
- 安装完成后,打开命令提示符(Windows)或终端(Mac/Linux)
验证安装:
bash
python --version # Windows系统
python3 --version # Mac/Linux系统
如果显示类似
Python 3.9.7的信息,说明安装成功。2. 安装 Django
使用 Python 的包管理工具 pip 安装 Django:
bash
pip install django # Windows系统
pip3 install django # Mac/Linux系统
验证 Django 安装:
bash
django-admin --version
显示版本号则表示安装成功。
二、创建项目:理解 Django 的组织结构
1. 为什么需要项目结构?
Django 强制使用特定的项目结构,这有几个好处:
- 保持代码组织有序,方便多人协作
- 分离不同功能的代码,提高可维护性
- 遵循最佳实践,减少错误
2. 创建项目
bash
django-admin startproject mysite
这个命令会创建一个名为
mysite的文件夹,里面包含 Django 项目的基础文件。进入项目文件夹:
bash
cd mysite
3. 项目结构详解
plaintext
mysite/
├── manage.py
└── mysite/
├── __init__.py
├── asgi.py
├── settings.py
├── urls.py
└── wsgi.py
manage.py:命令行工具,用于执行各种 Django 命令(非常重要!)- 内层
mysite文件夹:项目的主配置包__init__.py:告诉 Python 这是一个包settings.py:项目的所有配置(数据库、应用、中间件等)urls.py:项目的主 URL 配置asgi.py和wsgi.py:用于部署的配置文件(暂时不用关心)
4. 运行开发服务器
bash
python manage.py runserver
现在打开浏览器访问
http://127.0.0.1:8000/,你会看到 Django 的欢迎页面,说明一切正常!三、创建应用:为什么需要应用?
1. 为什么要创建应用?
Django 将项目分为多个 "应用"(app),这是为了:
- 功能模块化:每个应用负责一个特定功能(如用户管理、博客、购物车等)
- 代码复用:一个应用可以在多个项目中使用
- 便于维护:功能分离,更容易定位和修改代码
一个项目可以包含多个应用,一个应用也可以被多个项目使用。
2. 创建第一个应用
让我们创建一个名为
blog的应用,用于展示博客功能:bash
python manage.py startapp blog
这会创建一个
blog文件夹,结构如下:plaintext
blog/
├── __init__.py
├── admin.py
├── apps.py
├── migrations/
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
3. 为什么要注册应用?如何注册?
Django 不会自动识别你创建的应用,必须手动注册,原因是:
- 让 Django 知道这个应用的存在
- 启用应用的模型、模板等功能
- 便于项目管理,你可以选择性地启用或禁用应用
注册方法:编辑
mysite/settings.py文件,找到INSTALLED_APPS列表,添加blog:python
运行
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog', # 添加这一行,注册我们的blog应用
]
四、视图(Views):处理用户请求的核心
1. 什么是视图?为什么需要它?
视图是处理用户请求并返回响应的函数或类。它是用户请求和服务器响应之间的桥梁:
- 接收用户请求的数据
- 处理业务逻辑(如查询数据库、验证用户等)
- 生成并返回响应(网页、JSON 等)
2. 编写第一个视图
编辑
blog/views.py文件:python
运行
from django.http import HttpResponse
# 定义一个首页视图
def home(request):
# request参数包含了所有关于用户请求的信息
return HttpResponse("欢迎来到我的博客!")
这个简单的视图做了两件事:
- 接收
request对象(包含用户请求的所有信息) - 返回一个包含文本 "欢迎来到我的博客!" 的响应
3. 视图为什么要这样写?
- 必须接受
request参数:这是 Django 的规定,确保视图能获取到请求的所有信息 - 必须返回响应对象:Django 要求视图必须返回一个
HttpResponse或其子类的实例 - 函数命名:通常使用描述性的名称,如
home、detail等,提高代码可读性
五、URL 路由:如何将 URL 映射到视图?
1. 什么是 URL 路由?为什么需要它?
URL 路由就是将用户访问的 URL 地址映射到对应的视图函数。它的作用是:
- 定义网站的 URL 结构
- 将不同的 URL 请求分发到相应的视图处理
- 让 URL 更加友好和易于理解(如
/blog/1/比/?page=blog&id=1更好)
2. URL 配置的工作原理
Django 的 URL 配置采用 "主从" 结构:
- 项目级 URL 配置(
mysite/urls.py):负责总体路由分配 - 应用级 URL 配置(
blog/urls.py):负责具体应用的路由
这种结构的好处是:
- 分离不同应用的 URL 配置
- 便于管理和维护
- 可以灵活地调整 URL 结构
3. 配置应用级 URL
首先,在
blog文件夹中创建urls.py文件:python
运行
# blog/urls.py
from django.urls import path
from . import views # 导入当前目录下的views模块
# 定义URL模式列表
urlpatterns = [
# 当用户访问空路径(即/blog/的根路径)时,调用views.home视图
path('', views.home, name='blog_home'),
]
path()函数有三个主要参数:- URL 模式字符串(如
''表示空路径) - 对应的视图函数(如
views.home) - 可选的
name参数(用于模板中引用,避免硬编码 URL)
- URL 模式字符串(如
4. 配置项目级 URL
编辑
mysite/urls.py文件,将博客应用的 URL 包含进来:python
运行
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
# 当用户访问以/blog/开头的URL时,使用blog应用的urls.py处理
path('blog/', include('blog.urls')),
]
include()函数的作用是引入其他 URL 配置模块- 这里表示所有以
/blog/开头的 URL 都由blog/urls.py处理