Skip to content

第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的核心特点

  1. 快速开发:Django提供了大量内置功能,让开发者能够快速构建Web应用
  2. 安全性:内置多种安全机制,如CSRF保护、SQL注入防护等
  3. 可扩展性:支持大型应用的开发和部署
  4. 功能完整:包含ORM、管理后台、认证系统等完整功能
  5. 文档完善:拥有详细的官方文档和活跃的社区

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

特性DjangoFlask
学习曲线较陡峭,功能丰富平缓,简单轻量
内置功能功能完整(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

特性DjangoFastAPI
主要用途全栈Web开发API开发
性能中等高性能
类型提示部分支持原生支持
异步支持Django 3.1+原生异步

Django的应用场景

适合Django的项目类型

  1. 内容管理系统(CMS)

    • 新闻网站
    • 博客平台
    • 企业官网
  2. 电子商务平台

    • 在线商店
    • 市场平台
    • 订单管理系统
  3. 社交网络应用

    • 论坛系统
    • 社交媒体平台
    • 在线社区
  4. 企业应用系统

    • 客户关系管理(CRM)
    • 企业资源规划(ERP)
    • 项目管理系统

使用Django的知名网站

  • Instagram:世界最大的图片分享平台
  • Pinterest:图片收集和分享网站
  • Mozilla:Firefox浏览器官网
  • Washington Post:华盛顿邮报官网
  • Bitbucket:代码托管平台

小结

Django作为一个功能完整的Python Web框架具有显著优势:

  1. ✅ 采用"包含电池"的设计哲学,内置丰富功能
  2. ✅ 遵循DRY原则,避免重复代码
  3. ✅ 提供快速开发能力,提高开发效率
  4. ✅ 拥有完善的安全机制和活跃的社区支持
  5. ✅ 适用于多种类型的Web项目开发

掌握Django基础概念是学习Django开发的第一步。

下一篇

我们将搭建Django开发环境。

1.2 Django环境搭建 →

目录

返回课程目录

Released under the Apache 2.0 License.