988 字
5 分钟
Django开发记录(零):Django后端开发基础
Django后端开发基础
项目背景在开始Django项目开发之前,我们需要掌握后端开发的基础知识。本篇将详细介绍Django框架的核心概念和关键技术,为后续开发打下坚实基础。
技术特点
- 清晰的框架架构
- 强大的ORM支持
- 灵活的URL路由
- 完善的模板系统
1. Django框架基础
1.1 框架架构
架构设计Django采用MTV架构:
- Model:数据模型层
- Template:模板层
- View:视图层
# 项目结构示例
project/
├── manage.py # 项目管理脚本
├── project/ # 项目配置目录
│ ├── __init__.py
│ ├── settings.py # 项目设置
│ ├── urls.py # URL配置
│ └── wsgi.py # WSGI配置
└── app/ # 应用目录
├── models.py # 数据模型
├── views.py # 视图函数
├── urls.py # URL路由
└── templates/ # 模板文件
1.2 核心概念
核心概念Django的核心概念包括:
- 项目和应用
- 模型和数据库
- 视图和URL
- 模板和表单
# 应用示例
from django.db import models
from django.urls import path
from django.shortcuts import render
# 模型定义
class User(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField(unique=True)
created_at = models.DateTimeField(auto_now_add=True)
# 视图函数
def user_list(request):
users = User.objects.all()
return render(request, "user_list.html", {"users": users})
# URL配置
urlpatterns = [
path("users/", user_list, name="user_list"),
]
2. 数据库操作
2.1 ORM基础
ORM特点Django ORM提供:
- 对象关系映射
- 查询构建器
- 事务管理
- 数据验证
# 模型定义
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
author = models.ForeignKey(User, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ["-created_at"]
def __str__(self):
return self.title
# 数据操作
# 创建
article = Article.objects.create(
title="Django基础",
content="Django是一个强大的Web框架",
author=user
)
# 查询
articles = Article.objects.filter(
author=user
).order_by("-created_at")
# 更新
article.title = "Django进阶"
article.save()
# 删除
article.delete()
2.2 高级查询
查询优化高级查询技巧:
- 关联查询
- 聚合操作
- 子查询
- 性能优化
# 关联查询
articles = Article.objects.select_related("author").all()
# 聚合操作
from django.db.models import Count, Avg
stats = Article.objects.aggregate(
total=Count("id"),
avg_length=Avg("content_length")
)
# 复杂查询
from django.db.models import Q
articles = Article.objects.filter(
Q(title__icontains="django") |
Q(content__icontains="python")
).distinct()
3. RESTful API设计
3.1 API基础
API设计RESTful API设计原则:
- 资源导向
- 状态转移
- 统一接口
- 无状态通信
# 视图类
from rest_framework import viewsets
from rest_framework.response import Response
class ArticleViewSet(viewsets.ModelViewSet):
queryset = Article.objects.all()
serializer_class = ArticleSerializer
def list(self, request):
articles = self.get_queryset()
serializer = self.get_serializer(articles, many=True)
return Response(serializer.data)
def create(self, request):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data)
3.2 序列化器
序列化序列化器功能:
- 数据验证
- 数据转换
- 关系处理
- 自定义字段
# 序列化器定义
from rest_framework import serializers
class ArticleSerializer(serializers.ModelSerializer):
author_name = serializers.CharField(
source="author.name",
read_only=True
)
class Meta:
model = Article
fields = ["id", "title", "content", "author_name"]
def validate_title(self, value):
if len(value) < 5:
raise serializers.ValidationError("标题太短")
return value
4. 安全与认证
4.1 认证机制
认证设计认证机制包括:
- 用户认证
- 权限控制
- 会话管理
- 安全防护
# 认证视图
from django.contrib.auth import authenticate, login
from rest_framework.authtoken.models import Token
def login_view(request):
username = request.POST.get("username")
password = request.POST.get("password")
user = authenticate(username=username, password=password)
if user:
login(request, user)
token, _ = Token.objects.get_or_create(user=user)
return Response({"token": token.key})
return Response({"error": "认证失败"}, status=400)
4.2 权限控制
权限管理权限控制策略:
- 基于角色的访问控制
- 对象级权限
- 自定义权限
- 权限缓存
# 权限类
from rest_framework import permissions
class IsOwnerOrReadOnly(permissions.BasePermission):
def has_object_permission(self, request, view, obj):
if request.method in permissions.SAFE_METHODS:
return True
return obj.author == request.user
# 视图使用
class ArticleViewSet(viewsets.ModelViewSet):
permission_classes = [IsOwnerOrReadOnly]
# ...
总结
关键收获
- 掌握了Django框架基础
- 理解了数据库操作原理
- 熟悉了API设计方法
- 了解了安全认证机制
注意事项
开发规范
- 遵循PEP 8规范
- 保持代码简洁
- 注重代码复用
性能优化
- 优化数据库查询
- 合理使用缓存
- 控制资源消耗
下一篇预告在下一篇《环境搭建与基础部署》中,我们将详细介绍:
- 开发环境配置
- 项目初始化
- 基础功能实现
- 部署方案设计
NOTE本文是Django开发系列的第零篇,重点介绍了后端开发的基础知识。建议读者在开始项目开发前,先掌握这些基础知识,为后续开发打下坚实基础。