Django入门指南:Python全栈框架解析

1. Django 是什么?

Django 是一个高级 Python Web 框架,遵循 MTV(Model-Template-View)模式(类似 MVC),提供:

  • 全栈功能:ORM、模板引擎、路由、认证等
  • 开箱即用:自带 Admin 后台、缓存、国际化支持
  • 安全优先:自动防范 SQL 注入、XSS、CSRF 等攻击

2. 核心组件

(1) 模型(Model)
python 复制代码
# models.py
from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    pub_date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title
  • ORM:用 Python 类定义数据库表
  • 数据迁移python manage.py makemigrationsmigrate
  • 查询 APIArticle.objects.filter(title__contains="Django")
(2) 视图(View)
python 复制代码
# views.py
from django.shortcuts import render
from .models import Article

def article_list(request):
    articles = Article.objects.all()
    return render(request, 'blog/list.html', {'articles': articles})
  • 处理请求 :接收 HttpRequest,返回 HttpResponse
  • 两种形式
    • 函数视图(FBV)
    • 类视图(CBV):class ArticleListView(ListView)
(3) 模板(Template)
python 复制代码
<!-- templates/blog/list.html -->
{% for article in articles %}
  <h2>{{ article.title }}</h2>
  <p>{{ article.content|truncatewords:30 }}</p>
{% endfor %}
  • 变量{``{ variable }}
  • 标签{% for %}{% if %}
  • 过滤器|lower|date:"Y-m-d"
(4) URL 路由
python 复制代码
# urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('articles/', views.article_list, name='article-list'),
]
  • 路径转换器<int:id><slug:title>
  • 命名 URL{% url 'article-list' %}

3. Django 工作流程

  1. 请求进入 → URL 路由匹配
  2. 调用对应视图 → 处理业务逻辑
  3. 操作模型 → 数据库 CRUD
  4. 渲染模板 → 返回 HTML 响应

4. 关键特性

(1) Admin 后台
python 复制代码
# admin.py
from django.contrib import admin
from .models import Article

@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
    list_display = ('title', 'pub_date')
  • 自动生成/admin 界面
  • 自定义:列表显示、搜索、过滤
(2) 表单处理
python 复制代码
# forms.py
from django import forms

class ArticleForm(forms.ModelForm):
    class Meta:
        model = Article
        fields = ['title', 'content']
  • 自动验证form.is_valid()
  • CSRF 防护{% csrf_token %}
(3) 用户认证
python 复制代码
from django.contrib.auth import authenticate, login

def login_view(request):
    user = authenticate(username=request.POST['username'], password=request.POST['password'])
    if user:
        login(request, user)
  • 内置模型UserGroupPermission
  • 装饰器@login_required

5. 项目结构

python 复制代码
myproject/
├── manage.py          # 命令行工具
├── myproject/         # 项目配置
│   ├── settings.py    # 数据库/中间件等设置
│   ├── urls.py        # 根路由
│   └── wsgi.py        # 生产部署入口
└── myapp/             # 应用模块
    ├── migrations/    # 数据库迁移文件
    ├── admin.py       # Admin 配置
    ├── models.py      # 数据模型
    ├── views.py       # 业务逻辑
    └── templates/     # 模板文件

6. 快速启动

bash 复制代码
# 安装
pip install django

# 创建项目
django-admin startproject myproject
cd myproject

# 创建应用
python manage.py startapp myapp

# 运行开发服务器
python manage.py runserver

7. 最佳实践

  1. 应用拆分 :每个功能模块作为独立应用(如 usersblog
  2. 环境隔离 :使用 python-decouple 管理敏感配置
  3. 静态文件STATICFILES_DIRS + collectstatic
  4. 性能优化
    • 查询优化:select_related()prefetch_related()
    • 缓存:@cache_page
  5. 安全措施
    • DEBUG=False 生产环境
    • ALLOWED_HOSTS 严格配置

8. 扩展推荐

  • REST API:Django REST Framework (DRF)
  • 实时功能:Django Channels
  • 异步支持:Django 3.1+ 原生异步视图
  • 测试工具TestCasepytest-django

通过以上内容,您能快速理解 Django 的核心机制。建议从官方教程(https://docs.djangoproject.com/)开始实践,逐步构建完整项目!

相关推荐
anxiao_m14 小时前
2026大文件传输软件推荐,从速度安全多维度客观测评
数据库·文件传输·传输
IT大白鼠14 小时前
MySQL 分布式集群系列 · 第七篇——生产调优实战:NDB 性能、内存、高可用全方位优化
数据库·分布式·mysql
IvorySQL14 小时前
打造下一代 AI Agent 的统一多模智能数据底座——PostgreSQL 与 AI 的融合演进
数据库·人工智能·postgresql
ShineWinsu14 小时前
对于MySQL:内置函数的解析
linux·数据库·c++·mysql·面试·函数·查询
isNotNullX14 小时前
智能问数为什么答不准?数据、语义、模型、SQL四层拆解
数据库
烂蜻蜓15 小时前
Django入门教程(三):django-admin与manage.py命令完全指南
数据库·django·sqlite
yunlaodacom16 小时前
腾讯云国际版代理商:COS标准、低频、归档和深度归档怎么选?存储成本与数据取回区别
数据库·云计算·腾讯云
Nturmoils16 小时前
SQL Server数据库迁移:V9R4C019 如何接住存量 T-SQL 批处理
数据库
NineData16 小时前
NineData智能数据管理平台新功能发布|2026年8月
数据库·人工智能·oracle·中间件·agent·数据库开发·ninedata
Elastic 中国社区官方博客16 小时前
Elasticsearch 向量数据库:几分钟内完成部署,以经济高效的方式扩展至数千亿规模
大数据·运维·数据库·elasticsearch·搜索引擎·ai·全文检索