Django Pro
构建生产就绪的 Django 应用程序
Django 开发者常常在复杂的架构决策和现代 Django 5.x 特性方面遇到困难。本技能提供关于异步视图、DRF、Celery 和可扩展模式的专业指导,帮助构建可维护的 Web 应用程序。
下载技能 ZIP
在 Claude 中上传
前往 设置 → 功能 → 技能 → 上传技能
开启并开始使用
测试它
正在使用“Django Pro”。 优化获取作者及其文章和评论的 queryset
预期结果:
使用 select_related 和 prefetch_related 消除 N+1 查询:
Author.objects.select_related('profile').prefetch_related(
'posts',
'posts__comments',
'posts__tags'
).annotate(
post_count=Count('posts', distinct=True),
comment_count=Count('posts__comments', distinct=True)
)
这将数据库查询从 1 + N + (N*M) 减少到仅 3 个查询。
正在使用“Django Pro”。 创建用于对象级访问的自定义权限类
预期结果:
对象级权限,仅允许作者编辑其文章:
class IsAuthorOrReadOnly(permissions.BasePermission):
def has_object_permission(self, request, view, obj):
if request.method in permissions.SAFE_METHODS:
return True
return obj.author == request.user
应用于 ModelViewSet,设置 permission_classes = [IsAuthenticated, IsAuthorOrReadOnly]
安全审计
安全This is a prompt-only instructional skill with no executable code. Static analysis scanned 0 files and detected 0 security issues with a risk score of 0/100. The skill provides Django development guidance and best practices without any code execution, network access, or file system operations. Safe for publication.
质量评分
你能构建什么
企业级 Django 架构
设计可扩展的多租户 SaaS 应用程序,采用适当的服务层模式、仓库抽象和环境特定配置。
使用 DRF 进行 API 开发
使用 Django REST Framework 实现具有 JWT 身份验证、自定义权限、viewsets 和全面 API 文档的 RESTful API。
性能优化
识别和解决 N+1 查询问题,实现数据库索引策略,并为高流量 Django 应用程序配置缓存层。
试试这些提示
创建一个博客文章 Django 模型,包含标题、内容、作者、标签和发布日期。包括适当的索引、用于已发布文章的自定义管理器,以及 __str__ 方法。遵循 Django 5.x 约定。
构建一个用于用户注册的 Django REST Framework API 端点,包含电子邮件验证。包括带有验证的序列化器、viewset、JWT 令牌生成,以及使用 Celery 排队的电子邮件发送任务。
将此同步 Django 视图转换为异步视图,并发地从三个外部 API 获取数据。使用 asyncio.gather,添加适当的错误处理,并为每个请求实现超时限制。
使用 Django Channels 实现 WebSocket 消费者,用于实时聊天功能。包括连接处理、向房间组广播消息、数据库消息持久化,以及 Redis 通道层配置。
最佳实践
- 在添加第三方包之前先使用 Django 的内置功能,以减少依赖和维护负担
- 在模型中实现数据库级约束以及应用级验证,以确保数据完整性
- 在多个级别编写测试:针对模型和工具类的单元测试,针对视图和 API 的集成测试,针对关键用户流程的端到端测试
避免
- 将业务逻辑放在视图或模板中,而不是使用服务层来实现关注点分离
- 在循环中使用 filter() 而不是批量操作或正确连接的查询,导致 N+1 查询问题
- 将机密信息存储在 settings.py 中,而不是使用带有 django-environ 或类似包的环境变量