当前位置: 首页 > news >正文

完整教程: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 和 Django

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

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

# 创建项目
django-admin startproject demo
cd demo
# 创建应用
python manage.py startapp users

配置应用
编辑 demo/settings.py,添加 usersrest_frameworkINSTALLED_APPS

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 模型:

from django.db import models
class User(models.Model):
name = models.CharField(max_length=50)
age = models.IntegerField()
def __str__(self):
return self.name

迁移数据库

python manage.py makemigrations
python manage.py migrate

说明

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

步骤 3: 创建序列化器

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

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 视图:

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 中定义路由:

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 中包含应用路由:

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

步骤 5: 运行和测试

  1. 启动服务器

    python manage.py runserver
  2. 测试 API

    • GEThttp://localhost:8000/api/users/:列出所有用户。
    • POSThttp://localhost:8000/api/users/
      {
      "name": "Alice",
      "age": 25
      }
    • GEThttp://localhost:8000/api/users/1/:获取 ID 为 1 的用户。
  3. 访问 Admin 界面

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

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

进阶与最佳实践

  • 生产配置

    • 设置 DEBUG=False 并配置静态文件服务:
      STATIC_ROOT = BASE_DIR / 'staticfiles'
      运行 python manage.py collectstatic
    • 使用 PostgreSQL:修改 settings.pyDATABASES 配置。
  • 认证和权限

    • 集成 rest_framework.authenticationpermissions
      REST_FRAMEWORK = {
      'DEFAULT_AUTHENTICATION_CLASSES': [
      'rest_framework.authentication.TokenAuthentication',
      ],
      'DEFAULT_PERMISSION_CLASSES': [
      'rest_framework.permissions.IsAuthenticated',
      ]
      }
  • 性能优化

    • 启用缓存:集成 Redis 或 Memcached。
    • 分页:为 ListCreateAPIView 添加分页:
      REST_FRAMEWORK = {
      'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
      'PAGE_SIZE': 10
      }
  • 部署

    • 使用 Gunicorn 和 Nginx:
      pip install gunicorn
      gunicorn demo.wsgi -b 0.0.0.0:8000
    • 容器化:创建 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 开发,适合快速原型和复杂应用。

http://www.rkmt.cn/news/21025.html

相关文章:

  • 高级语言程序第一次作业
  • Windows MySQL 管理
  • 数据流通合规新基建 隐私计算平台的三重安全防线
  • 小程序分享
  • 图论 Walks Trails and Paths in Graph Theory 路径,链,简单路径
  • 2025 年国内面板生产厂家最新推荐排行榜,涵盖耐用 / 肤感 / 半透 / 防指纹 / 电镀 / 防静电面板等多特性优质面板厂家推荐
  • 淘宝店铺全量商品接口深度开发:从分页优化到数据完整性保障 - 实践
  • 敏捷研发管理工具深度测评:ONES、Jira、YouTrack 等 10 款全维度分析
  • 护理白板系统统一外网映射配置
  • openldap之slappasswd
  • 【STM32 系列】理清 xxRAM、xxROM、xxFlash 的核心作用,附 H7 系列超便捷内存区域管理方法
  • 今天被公司告知不续签合同了,我被优化了 哈哈哈
  • 2025 年混合机厂家最新推荐排行榜:强力混合机 / 倾斜式混合机 / 耐火材料混合机 / 锂电池材料混合机 / 球团强力混合机优质厂家推荐
  • 2025 优质防爆接线盒/防爆穿线盒/防爆接电箱厂家推荐榜:安全与专业兼具的行业之选
  • Microsoft Purview实现数据泄露概率降低30%的技术解析
  • springboot实现微信支付
  • 10080 端口打不开页面
  • pringcloud 中的gateway详解一下,其中的原理
  • 用 Python + Vue3 打造超炫酷音乐播放器:网易云歌单爬取 + Three.js 波形可视化
  • 读书笔记:时间戳(TIMESTAMP)类型:比日期更强大的时间管理工具
  • 在线PS(Photoshop网页版)如何加马赛克,保护隐私的小技巧
  • 2025 深圳点胶机厂家实用推荐榜:从精密制造到行业适配的优选指南
  • 2025 广东洗头机厂家推荐榜:从家用到商用的品质之选
  • 深入解析:XC7A100T-2CSG324I 赛灵思 Xilinx AMD Artix-7 FPGA
  • excel单元格粘贴显示科学计数法,需要展示完整的字符串的解决方法
  • 2025法兰保护罩厂家推荐:荣专科技,专业制造防溅保温优质产品!
  • 在CentOS 7.9系统上使用Docker部署RuoYi-Vue前后端分离系统
  • uni-app x使用uview-plus
  • 详细介绍:【数据结构与算法-Day 36】查找算法入门:从顺序查找的朴素到二分查找的惊艳
  • MATLAB频散曲线绘制与相速度群速度分析