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

news/2025/10/14 18:26:53/文章来源:https://www.cnblogs.com/lxjshuju/p/19141751

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.mzph.cn/news/937000.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hyperliquid 的稳定币USDH发行机制与发行商竞选指南

引言:稳定币是什么,为什么 Hyperliquid 需要它? 想象一下,在加密货币世界里,价格像过山车一样波动,你需要一个“稳定锚”来固定价值——这就是稳定币(Stablecoin)。稳定币是一种设计成与美元或其他资产挂钩的加…

windows上建简单的ssh版git仓库

说来话长,公司用的svn,内网,我想弄个简单的git仓库客户端自己用,问了好久的AI,真垃圾的这个AI。 过程如下: 1、Windows自带的OpenSSH 自己找找网上怎么开启,没有的话离线下载: 离线下载 2、安装git,这里就不说…

2025年聚合硫酸铁供应厂家如何选?行业权威指南与成本控制策略?

文章摘要 本文深入分析2025年聚合硫酸铁供应市场趋势,从生产技术、质量把控、成本优化等多维度解析如何选择靠谱供应商。以铜陵君尔源环保科技为例,通过实际案例揭示优质厂家的核心优势,为企事业单位提供科学的采购…

高级语言程序第一次作业

这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/gjyycx 这个作业要求在哪里:https://edu.cnblogs.com/campus/fzu/gjyycx/homework/13558 学号:102500332 姓名:郑雷 1.成功安装编译环境结果如图 捕获 2…

MCP信任遭遇首次野外攻击:通过仿冒Postmark连接器窃取邮件

恶意npm包"postmark-mcp"通过隐藏密送功能窃取数千封邮件,这是MCP协议首次在野外遭遇信任滥用攻击,暴露出AI连接器协议安全防护不足的严重问题。在一场新披露的供应链攻击中,npm包"postmark-mcp&quo…

Windows MySQL 管理

启动及关闭 MySQL 服务器 Windows 系统下 启动 MySQL 服务器: 1、通过 "服务" 管理工具: 打开"运行"对话框(Win + R),输入 services.msc,找到"MySQL"服务,右击选择"启动&quo…

Hyperbeat Earn 套利指南:新手也能玩转 DeFi 赚钱术

引言:Hyperbeat Earn 是什么,为什么适合套利? 想象一下,你在银行借钱利率低,然后把钱存到另一个高息账户赚差价——这就是“套利”(arbitrage)的简单版。在 DeFi(去中心化金融)世界,Hyperbeat Earn(网址:h…

数据流通合规新基建 隐私计算平台的三重安全防线

在数字经济时代,数据要素的流通已成为推动产业创新的核心动力,但随之而来的隐私泄露、合规风险与信任壁垒等问题也日益凸显。埃文科技的隐私计算平台(PrivLink)通过构建架构层、控制层、认证层三重安全防线,为数据…

如何在AutoCAD中管理GIS属性表?

借助GIS4CAD插件,可以在AutoCAD中像ArcGIS一样管理GIS属性表,包括:添加字段、查找替换、属性查询、批量赋值、几何计算、导出Excel等一系列实用功能,广泛应用于建库汇交等各种GIS数据管理场景。使用GIS4CAD,不懂G…

详细介绍:跨平台UMEDITOR如何实现Word/Excel/PPT的统一格式管理?

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

小程序分享

https://article.juejin.cn/post/7242134982218399804

21届acm线下密码题目real_easy_rsa

参加了湖南省线下的acm程序设计大赛中的网络攻防赛事,拼尽全力拿的二等奖。作为二进制手觉得题目难度还是在的,所以决定复现一下。 crypto:Real_eazy_RSA 根据题目是一个rsa的题目,题目给了加密文件的附件,附件代码…

2025 年迷你仓厂家行业选购指南:安东易/小型/微型/商用/搬家/装修/电商/恒温迷你仓厂家,聚焦安全与灵活,这份优质厂商推荐榜请收好

随着城市化进程加快、居民生活空间优化需求提升及中小企业仓储成本控制意识增强,迷你仓作为便捷化、个性化的仓储解决方案,已从传统仓储补充业态,逐步普及至个人储物、家庭搬家、企业周转等多个场景,2025 年市场规…

连锁餐饮拓展微信业务:试错 3 个月,终于找到靠谱方案

作为一家拥有 12 家门店的连锁餐饮品牌,今年初我们决定发力微信生态 —— 想做小程序点单、公众号会员运营,还要打通各门店的用户数据。可刚开始推进就处处碰壁:找定制开发公司,报价动辄几十万,还得等 3 个月以上…

图论 Walks Trails and Paths in Graph Theory 路径,链,简单路径

Walks Trails and Paths in Graph Theory - YouTubeClosed Walks, Closed Trails (Circuits) and Closed Paths (Directed Cycles) in Graph TheoryWalks, Trails, Paths, Cycles and Circuits in Graph - GeeksforGee…

2025 年国内面板生产厂家最新推荐排行榜,涵盖耐用 / 肤感 / 半透 / 防指纹 / 电镀 / 防静电面板等多特性优质面板厂家推荐

在当前面板行业快速发展但竞争格局复杂的背景下,市场上产品质量参差不齐,部分厂家技术能力不足、供应链不稳定、服务响应滞后等问题,给企业和采购方挑选优质面板产品带来极大困扰。尤其是不同领域对面板的耐用、肤感…

3、推荐统一使用 ResponseEntity<T> 作为控制器返回类型 - 详解

3、推荐统一使用 ResponseEntity<T> 作为控制器返回类型 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "…

2025年法兰保护罩/阀门保温罩/法兰罩/法兰防溅罩/法兰保护套厂家最新推荐榜单,专业防护与高效节能首选!

2025年法兰保护罩/阀门保温罩/法兰罩/法兰防溅罩/法兰保护套厂家最新推荐榜单,专业防护与高效节能首选!随着工业技术的不断进步,法兰保护罩、阀门保温罩、法兰罩、法兰防溅罩和法兰保护套等产品在工业生产中的应用越…

淘宝店铺全量商品接口深度开发:从分页优化到数据完整性保障 - 实践

淘宝店铺全量商品接口深度开发:从分页优化到数据完整性保障 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &quo…