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

相关推荐
掘根3 小时前
【MySQL进阶】常用MySQL程序
数据库·mysql
PH = 74 小时前
MySQL的Sql优化经验总结
数据库·mysql
fouryears_234174 小时前
Mysql初阶操作:对命令的详细介绍
数据库·mysql
盖世英雄酱581364 小时前
时间设置的是23点59分59秒,数据库却存的是第二天00:00:00
java·数据库·后端
安迪小宝5 小时前
16 celery集成其他工具
数据库·python·sqlite·celery
皮皮林5515 小时前
面试官:2000w 数据的大表如何优化?至少提供三种方案!
数据库
t198751286 小时前
使用zip命令在Ubuntu 20.04上进行文件夹压缩
linux·数据库·ubuntu
牵牛老人6 小时前
聊聊Qt 中的多面手之QVariant 变体类
开发语言·数据库·qt
笨手笨脚の7 小时前
Redis 常用配置实践
数据库·redis·配置·spring runner