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.pywsgi.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("欢迎来到我的博客!")
这个简单的视图做了两件事:
  1. 接收request对象(包含用户请求的所有信息)
  2. 返回一个包含文本 "欢迎来到我的博客!" 的响应

3. 视图为什么要这样写?

  • 必须接受request参数:这是 Django 的规定,确保视图能获取到请求的所有信息
  • 必须返回响应对象:Django 要求视图必须返回一个HttpResponse或其子类的实例
  • 函数命名:通常使用描述性的名称,如homedetail等,提高代码可读性

五、URL 路由:如何将 URL 映射到视图?

1. 什么是 URL 路由?为什么需要它?

URL 路由就是将用户访问的 URL 地址映射到对应的视图函数。它的作用是:
  • 定义网站的 URL 结构
  • 将不同的 URL 请求分发到相应的视图处理
  • 让 URL 更加友好和易于理解(如/blog/1//?page=blog&id=1更好)

2. URL 配置的工作原理

Django 的 URL 配置采用 "主从" 结构:
  1. 项目级 URL 配置(mysite/urls.py):负责总体路由分配
  2. 应用级 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)

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处理