Django 入门:快速构建 Python Web 应用的强大框架

Django 入门:快速构建 Python Web 应用的强大框架

今天我们来深入探讨 Django,一个基于 Python 的高性能 Web 开发框架。Django 以其"电池全包"的设计理念、强大的 ORM 和快速开发能力,成为构建现代化 Web 应用的首选工具。本文将带你从零搭建一个简单的 Django 项目,实现用户管理的 REST API,适合初学者快速上手,同时为有经验的开发者提供进阶建议和优化思路。

Django 提供开箱即用的功能,如用户认证、管理员界面和数据库管理,特别适合快速原型开发和企业级应用。本文基于 Django 5.x,使用 Python 3.10+ 和 SQLite(默认数据库),通过 Django REST Framework 实现 API。让我们开始吧!

前置准备

在开始之前,确保开发环境已就绪:

  • Python:推荐 Python 3.10 或更高(Django 5.x 要求 3.10+)。

  • 包管理器:pip(默认)或 Poetry,用于安装依赖。

  • IDE:PyCharm、VS Code 或其他支持 Python 的编辑器。

  • 数据库:默认使用 SQLite(无需额外安装),生产环境可切换到 PostgreSQL。

  • 项目结构 :创建一个 Django 项目,目录如下:

    复制代码
    django-demo
    ├── manage.py
    ├── demo
    │   ├── __init__.py
    │   ├── settings.py
    │   ├── urls.py
    │   ├── asgi.py
    │   └── wsgi.py
    ├── users
    │   ├── migrations
    │   ├── __init__.py
    │   ├── admin.py
    │   ├── models.py
    │   ├── serializers.py
    │   ├── urls.py
    │   └── views.py
    └── requirements.txt

安装 Python 和 Django:

  • 确保 Python 已安装:python3 --version。

  • 创建虚拟环境:python3 -m venv venv && source venv/bin/activate(Linux/Mac)或 venv\Scripts\activate(Windows)。

  • 安装 Django 和 Django REST Framework:

    bash 复制代码
    pip install django==5.1 django-rest-framework

步骤 1: 创建 Django 项目和应用

初始化项目并创建一个用户管理应用。

bash 复制代码
# 创建项目
django-admin startproject demo
cd demo

# 创建应用
python manage.py startapp users

配置应用 :

编辑 demo/settings.py,添加 users 和 rest_framework 到 INSTALLED_APPS:

python 复制代码
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',  # REST Framework
    'users',           # 用户应用
]

步骤 2: 定义模型

在 users/models.py 中定义 User 模型:

python 复制代码
from django.db import models

class User(models.Model):
    name = models.CharField(max_length=50)
    age = models.IntegerField()

    def __str__(self):
        return self.name

迁移数据库:

bash 复制代码
python manage.py makemigrations
python manage.py migrate

说明:

  • CharField 和 IntegerField:定义字段类型。
  • makemigrations:生成数据库迁移文件。
  • migrate:应用迁移,创建表(SQLite 默认存储在 db.sqlite3)。

步骤 3: 创建序列化器

在 users/serializers.py 中定义序列化器,用于将模型转换为 JSON:

python 复制代码
from rest_framework import serializers
from .models import User

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ['id', 'name', 'age']

说明:

  • ModelSerializer:自动映射模型字段。
  • fields:指定序列化的字段。

步骤 4: 创建视图和 URL

视图

在 users/views.py 中定义 REST API 视图:

python 复制代码
from rest_framework import generics
from .models import User
from .serializers import UserSerializer

class UserListCreateView(generics.ListCreateAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer

class UserDetailView(generics.RetrieveUpdateDestroyAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer

说明:

  • ListCreateAPIView:支持 GET(列表)和 POST(创建)。
  • RetrieveUpdateDestroyAPIView:支持 GET/PUT/DELETE(单条记录)。

URL 路由

在 users/urls.py 中定义路由:

python 复制代码
from django.urls import path
from .views import UserListCreateView, UserDetailView

urlpatterns = [
    path('users/', UserListCreateView.as_view(), name='user-list'),
    path('users/<int:pk>/', UserDetailView.as_view(), name='user-detail'),
]

在 demo/urls.py 中包含应用路由:

python 复制代码
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('users.urls')),
]

步骤 5: 运行和测试

  1. 启动服务器:

    bash 复制代码
    python manage.py runserver
  2. 测试 API:

    • GET http://localhost:8000/api/users/:列出所有用户。

    • POST http://localhost:8000/api/users/:

      json 复制代码
      {
          "name": "Alice",
          "age": 25
      }
    • GET http://localhost:8000/api/users/1/:获取 ID 为 1 的用户。

  3. 访问 Admin 界面:

    • 创建超级用户:python manage.py createsuperuser。
    • 访问 http://localhost:8000/admin/,登录后管理用户数据。
  4. 调试技巧:

    • 错误日志:查看终端输出或启用 DEBUG=True(settings.py)。
    • 数据库问题:检查 db.sqlite3 或迁移状态(python manage.py showmigrations)。
    • API 测试:使用 Postman 或 curl。

进阶与最佳实践

  • 生产配置:

    • 设置 DEBUG=False 并配置静态文件服务:

      python 复制代码
      STATIC_ROOT = BASE_DIR / 'staticfiles'

      运行 python manage.py collectstatic。

    • 使用 PostgreSQL:修改 settings.py 的 DATABASES 配置。

  • 认证和权限:

    • 集成 rest_framework.authentication 和 permissions:

      python 复制代码
      REST_FRAMEWORK = {
          'DEFAULT_AUTHENTICATION_CLASSES': [
              'rest_framework.authentication.TokenAuthentication',
          ],
          'DEFAULT_PERMISSION_CLASSES': [
              'rest_framework.permissions.IsAuthenticated',
          ]
      }
  • 性能优化:

    • 启用缓存:集成 Redis 或 Memcached。

    • 分页:为 ListCreateAPIView 添加分页:

      python 复制代码
      REST_FRAMEWORK = {
          'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
          'PAGE_SIZE': 10
      }
  • 部署:

    • 使用 Gunicorn 和 Nginx:

      bash 复制代码
      pip install gunicorn
      gunicorn demo.wsgi -b 0.0.0.0:8000
    • 容器化:创建 Dockerfile:

      dockerfile 复制代码
      FROM python:3.10-slim
      WORKDIR /app
      COPY requirements.txt .
      RUN pip install -r requirements.txt
      COPY . .
      CMD ["gunicorn", "demo.wsgi", "-b", "0.0.0.0:8000"]
  • 资源推荐:Django 官网(djangoproject.com)、《Django for Professionals》。多实践 REST API 和认证系统。

总结

通过这个 Django 示例,你学会了创建项目、定义模型、构建 REST API 和使用 Admin 界面。Django 的全包式设计极大简化了 Web 开发,适合快速原型和复杂应用。

相关推荐
江湖中的阿龙几秒前
AI Agent 调用工具怎么做才稳?参数校验、幂等与审计的 Python 实战
人工智能·python·ai agent·工具调用
今年下半年1 分钟前
【前端】Vue2 项目 ECharts 统计图表组件封装与使用实践(附组件源码)
前端·javascript·echarts
2 分钟前
正则少一个 re.MULTILINE,我的安全闸门全程空转——而我以为修好了
后端·代码规范
柠檬味拥抱4 分钟前
脑肿瘤检测数据集 | 4400张YOLO医学影像数据集
后端
破茧蝴蝶9 分钟前
Selenium4 Python 页面白屏监控方案
开发语言·python
西索斯coding9 分钟前
在 中接入 教程:p配置、m填写、扩展思考参数一篇就够(2)
java·前端·javascript·ai
柠檬味拥抱12 分钟前
汽车损伤检测数据集 | 11700张YOLO车辆定损数据集
后端
代码猎人12 分钟前
前端怎么优化项目基础架构
前端
柠檬味拥抱13 分钟前
基于 YOLO11 的规模化禽舍鸡只行为视觉监测平台:从模型到 Streamlit 全流程实战
后端
y = xⁿ14 分钟前
分享一下自己总结的RAG评测流程
人工智能·python