django-developer by 404kidwiz/claude-supercode-skills
npx skills add https://github.com/404kidwiz/claude-supercode-skills --skill django-developer提供 Django 和 Python Web 开发专业知识,专注于异步视图、Django Ninja API 和现代全栈模式。使用 HTMX 构建健壮的 Python Web 应用程序以实现服务器驱动 UI,使用 Django Channels 实现实时功能,使用 Celery 处理后台任务。
What is the project goal?
│
├─ **API First (Headless)**
│ ├─ Type-safe / Modern? → **Django Ninja** (Pydantic-based, fast)
│ └─ Legacy / Enterprise? → **DRF** (Batteries included, heavy)
│
├─ **Full Stack (Monolith)**
│ ├─ Complex UI (SPA)? → **Django + React/Vue** (API separation)
│ └─ Dynamic but Simple? → **Django + HTMX** (Hypermedia-driven, no build step)
│
└─ **Real-Time**
├─ Simple updates? → **HTMX Polling** or **SSE**
└─ Complex/Bi-directional? → **Django Channels (WebSockets)**
| 功能 | 同步(WSGI) |
|---|
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
| 异步(ASGI) |
|---|
| 建议 |
|---|
| 数据库查询 | User.objects.get() | await User.objects.aget() | 高并发 I/O(代理、聊天)场景使用异步。 |
| 视图 | def view(req): | async def view(req): | CPU 密集型任务保持同步。 |
| 中间件 | 标准 | 异步兼容 | 确保中间件栈支持异步。 |
select_related(外键)和 prefetch_related(多对多)。GinIndex 进行 JSONB 搜索,BTree 进行标准查找。bulk_create 和 bulk_update。危险信号 → 升级给 database-optimizer 处理:
for 循环内执行 ORM 查询.iterator())目标: 在不编写 React 的情况下实现"无限滚动"或"点击编辑"。
步骤:
视图(Python)
def contact_list(request):
contacts = Contact.objects.all()
# 如果是 HTMX 请求,仅返回行数据(部分)
if request.htmx:
template = "partials/contact_rows.html"
else:
template = "contact_list.html"
return render(request, template, {"contacts": contacts})
模板(contact_list.html)
<!-- 搜索在按键抬起时触发服务器请求 -->
<input type="text"
name="search"
hx-get="/contacts"
hx-trigger="keyup changed delay:500ms"
hx-target="#contact-rows">
<table>
<tbody id="contact-rows">
{% include "partials/contact_rows.html" %}
</tbody>
</table>
目标: 使用 async/await 实现高吞吐量 API 端点。
步骤:
视图定义
# views.py
from asgiref.sync import sync_to_async
async def dashboard_stats(request):
# 并行数据库查询
user_count_task = User.objects.acount()
order_count_task = Order.objects.acount()
user_count, order_count = await asyncio.gather(
user_count_task,
order_count_task
)
return JsonResponse({"users": user_count, "orders": order_count})
中间件兼容性
async_capable = True)。sync_to_async 包装它。使用场景: 保持视图和模型的精简。
# services.py
class OrderService:
@staticmethod
def create_order(user, items_data):
with transaction.atomic():
order = Order.objects.create(user=user)
for item in items_data:
OrderItem.objects.create(order=order, **item)
# 复杂逻辑放在这里
PaymentGateway.charge(order)
return order
使用场景: 可复用的过滤器。
class PublishedManager(models.Manager):
def get_queryset(self):
return super().get_queryset().filter(status='PUBLISHED', pub_date__lte=timezone.now())
class Article(models.Model):
# ...
objects = models.Manager() # 默认
published = PublishedManager() # 自定义
使用场景: WebSocket 处理。
# consumers.py
class ChatConsumer(AsyncWebsocketConsumer):
async def connect(self):
self.room_name = "lobby"
await self.channel_layer.group_add(self.room_name, self.channel_name)
await self.accept()
async def disconnect(self, close_code):
await self.channel_layer.group_discard(self.room_name, self.channel_name)
async def receive(self, text_data):
# 广播到群组
await self.channel_layer.group_send(
self.room_name,
{"type": "chat_message", "message": text_data}
)
_card.html)→ UI 开发者为其添加样式。EXPLAIN ANALYZE 输出。Dockerfile → DevOps 配置 Gunicorn/Uvicorn。每周安装数
64
代码仓库
GitHub 星标数
45
首次出现
2026年1月24日
安全审计
安装于
opencode52
codex49
gemini-cli48
claude-code48
cursor46
github-copilot42
Provides Django and Python web development expertise specializing in async views, Django Ninja APIs, and modern full-stack patterns. Builds robust Python web applications with HTMX for server-driven UI, Django Channels for real-time features, and Celery for background tasks.
What is the project goal?
│
├─ **API First (Headless)**
│ ├─ Type-safe / Modern? → **Django Ninja** (Pydantic-based, fast)
│ └─ Legacy / Enterprise? → **DRF** (Batteries included, heavy)
│
├─ **Full Stack (Monolith)**
│ ├─ Complex UI (SPA)? → **Django + React/Vue** (API separation)
│ └─ Dynamic but Simple? → **Django + HTMX** (Hypermedia-driven, no build step)
│
└─ **Real-Time**
├─ Simple updates? → **HTMX Polling** or **SSE**
└─ Complex/Bi-directional? → **Django Channels (WebSockets)**
| Feature | Sync (WSGI) | Async (ASGI) | Recommendation |
|---|---|---|---|
| DB Queries | User.objects.get() | await User.objects.aget() | Use Async for high-concurrency I/O (proxies, chat). |
| Views | def view(req): | async def view(req): | Keep Sync for CPU-bound tasks. |
| Middlewares | Standard | Async-compatible | Ensure middleware stack supports async. |
select_related (Foreign Keys) and prefetch_related (M2M).GinIndex for JSONB search, BTree for standard lookups.bulk_create and bulk_update for batches > 100 items.Red Flags → Escalate todatabase-optimizer:
for loop.iterator())Goal: Implement an "Infinite Scroll" or "Click to Edit" without writing React.
Steps:
View (Python)
def contact_list(request):
contacts = Contact.objects.all()
# If HTMX request, return only the rows (partial)
if request.htmx:
template = "partials/contact_rows.html"
else:
template = "contact_list.html"
return render(request, template, {"contacts": contacts})
Template (contact_list.html)
<!-- Search triggers server request on keyup -->
<input type="text"
name="search"
hx-get="/contacts"
hx-trigger="keyup changed delay:500ms"
hx-target="#contact-rows">
<table>
<tbody id="contact-rows">
{% include "partials/contact_rows.html" %}
</tbody>
</table>
Goal: High-throughput API endpoint using async/await.
Steps:
View Definition
# views.py
from asgiref.sync import sync_to_async
async def dashboard_stats(request):
# Parallel DB queries
user_count_task = User.objects.acount()
order_count_task = Order.objects.acount()
user_count, order_count = await asyncio.gather(
user_count_task,
order_count_task
)
return JsonResponse({"users": user_count, "orders": order_count})
Middleware Compatibility
async_capable = True).sync_to_async.Use case: Keeping Views and Models skinny.
# services.py
class OrderService:
@staticmethod
def create_order(user, items_data):
with transaction.atomic():
order = Order.objects.create(user=user)
for item in items_data:
OrderItem.objects.create(order=order, **item)
# Complex logic here
PaymentGateway.charge(order)
return order
Use case: Reusable filters.
class PublishedManager(models.Manager):
def get_queryset(self):
return super().get_queryset().filter(status='PUBLISHED', pub_date__lte=timezone.now())
class Article(models.Model):
# ...
objects = models.Manager() # Default
published = PublishedManager() # Custom
Use case: WebSocket handling.
# consumers.py
class ChatConsumer(AsyncWebsocketConsumer):
async def connect(self):
self.room_name = "lobby"
await self.channel_layer.group_add(self.room_name, self.channel_name)
await self.accept()
async def disconnect(self, close_code):
await self.channel_layer.group_discard(self.room_name, self.channel_name)
async def receive(self, text_data):
# Broadcast to group
await self.channel_layer.group_send(
self.room_name,
{"type": "chat_message", "message": text_data}
)
_card.html) → UI Dev styles them.EXPLAIN ANALYZE output from ORM generated SQL.Dockerfile → DevOps configures Gunicorn/Uvicorn.Weekly Installs
64
Repository
GitHub Stars
45
First Seen
Jan 24, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
opencode52
codex49
gemini-cli48
claude-code48
cursor46
github-copilot42
Firestore 基础入门指南 - 配置、安全规则、SDK 使用与索引优化
1,300 周安装