第1章:初见Django
1.1 Hello, Django!
Web框架概念
Web框架是一套用于开发Web应用程序的软件框架,它提供了一系列工具和库来简化Web开发过程。Web框架通常包含以下核心功能:
- URL路由:将URL请求映射到相应的处理函数
- 模板系统:动态生成HTML页面
- 数据库抽象层:简化数据库操作
- 表单处理:处理用户输入和数据验证
- 会话管理:管理用户状态和认证
Django简介
Django发音为/ˈdʒæŋɡoʊ/,是一个Python Web框架,由Adrian Holovaty和Simon Willison在2003年开始开发,2005年首次公开发布。目前最新版本是5.2(截至2025年9月)。
Django的核心特点
- 快速开发:Django提供了大量内置功能,让开发者能够快速构建Web应用
- 安全性:内置多种安全机制,如CSRF保护、SQL注入防护等
- 可扩展性:支持大型应用的开发和部署
- 功能完整:包含ORM、管理后台、认证系统等完整功能
- 文档完善:拥有详细的官方文档和活跃的社区
Django的设计哲学
DRY(Don't Repeat Yourself)
Django遵循DRY原则,避免重复代码。例如:
- 模型定义一次,自动生成数据库表和管理界面
- URL配置集中管理,避免硬编码
- 模板继承减少重复的HTML代码
简单的说,就是基于框架规范进行开发,Django提供各种工具来完成必要的功能,开发者重点关注业务逻辑。
python
# 模型定义示例
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title快速开发
Django提供了许多开箱即用的功能:
bash
# 一条命令创建项目
django-admin startproject myblog
# 一条命令创建应用
python manage.py startapp blog
# 一条命令生成管理员界面
python manage.py createsuperuser显式优于隐式
Django的配置和代码结构都很明确,不依赖"魔法"行为:
python
# URL配置明确指定路径和视图
urlpatterns = [
path('articles/', views.article_list, name='article_list'),
path('articles/<int:id>/', views.article_detail, name='article_detail'),
]Django vs 其他框架对比
Flask、FastAPI等是基于API的开发思路,可以快速的实现原型系统,一个文件就能运行起API服务。但是考虑复杂的应用场景,比如身份认证、权限控制、中间件等,需要加上很多的插件,演变到最后,和Django也是类似的。
Django vs Flask
| 特性 | Django | Flask |
|---|---|---|
| 学习曲线 | 较陡峭,功能丰富 | 平缓,简单轻量 |
| 内置功能 | 功能完整(ORM、Admin、认证) | 最小核心,需要扩展 |
| 项目结构 | 约定优于配置 | 灵活自定义 |
| 适用场景 | 大中型项目 | 小型项目、API服务 |
python
# Django视图示例
from django.shortcuts import render
from .models import Article
def article_list(request):
articles = Article.objects.all()
return render(request, 'blog/article_list.html', {'articles': articles})python
# Flask视图示例
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/articles')
def article_list():
# 需要自己处理数据库连接和查询
articles = get_articles_from_db()
return render_template('article_list.html', articles=articles)Django vs FastAPI
| 特性 | Django | FastAPI |
|---|---|---|
| 主要用途 | 全栈Web开发 | API开发 |
| 性能 | 中等 | 高性能 |
| 类型提示 | 部分支持 | 原生支持 |
| 异步支持 | Django 3.1+ | 原生异步 |
Django的应用场景
适合Django的项目类型
内容管理系统(CMS)
- 新闻网站
- 博客平台
- 企业官网
电子商务平台
- 在线商店
- 市场平台
- 订单管理系统
社交网络应用
- 论坛系统
- 社交媒体平台
- 在线社区
企业应用系统
- 客户关系管理(CRM)
- 企业资源规划(ERP)
- 项目管理系统
使用Django的知名网站
- Instagram:世界最大的图片分享平台
- Pinterest:图片收集和分享网站
- Mozilla:Firefox浏览器官网
- Washington Post:华盛顿邮报官网
- Bitbucket:代码托管平台
小结
Django作为一个功能完整的Python Web框架具有显著优势:
- ✅ 采用"包含电池"的设计哲学,内置丰富功能
- ✅ 遵循DRY原则,避免重复代码
- ✅ 提供快速开发能力,提高开发效率
- ✅ 拥有完善的安全机制和活跃的社区支持
- ✅ 适用于多种类型的Web项目开发
掌握Django基础概念是学习Django开发的第一步。
下一篇
我们将搭建Django开发环境。