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/)开始实践,逐步构建完整项目!

相关推荐
尚学教辅学习资料6 小时前
SSM从入门到实战:2.5 SQL映射文件与动态SQL
数据库·sql·动态sql·sql映射
大新屋7 小时前
MongoDB 分片集群把非分片集合转成分片集合
数据库·mongodb
Python代狂魔7 小时前
Redis
数据库·redis·python·缓存
柠檬茶AL7 小时前
36 NoSQL 注入
数据库·nosql·postman
-XWB-7 小时前
PostgreSQL诊断系列(2/6):锁问题排查全攻略——揪出“阻塞元凶”
数据库·postgresql
XiaoMu_0018 小时前
【MongoDB与MySQL对比】
数据库
做科研的周师兄9 小时前
【机器学习入门】1.2 初识机器学习:从数据到智能的认知之旅
大数据·数据库·人工智能·python·机器学习·数据分析·机器人
qq_364371729 小时前
基于 Redis + JWT 的跨系统身份共享方案
数据库·redis
技术与健康10 小时前
LLM实践系列:利用LLM重构数据科学流程04 - 智能特征工程
数据库·人工智能·重构
007php00710 小时前
Jenkins+docker 微服务实现自动化部署安装和部署过程
运维·数据库·git·docker·微服务·自动化·jenkins