协作头脑风暴
brainstorming
在实现前澄清需求、探索设计选择,并形成清晰的开发方向。
django-htmx【开发与工程】Build and review HTMX interactions in Django server-rendered projects, especially generated django-saas-starter apps. Use when adding hx attributes, partial template responses, request.htmx branching, django-htmx response headers, forms, swaps, triggers, redirects, polling, boosted links or forms, or coordinating HTMX with Alpine.js local state.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Use HTMX to keep Django templates, views, forms, permissions, and server-side validation in charge while adding focused partial-page updates. Prefer plain Django first, then add the smallest HTMX behavior that improves the workflow.
In generated django-saas-starter projects:
django-htmx is installed and django_htmx.middleware.HtmxMiddleware adds
request.htmx.htmx.min.js is copied from npm to frontend/static/vendors/js/ and loaded
by frontend/templates/base_app.html and frontend/templates/base_landing.html.X-CSRFToken during htmx:configRequest and
set window.htmx.config.historyRestoreAsHxRequest = false. Do not duplicate
this setup in feature templates.Use these skills for deeper htmx guidance, then translate back to Django forms, views, templates, permissions, and tests:
htmx-endpoint-design for request/response contracts, targets, swaps,
out-of-band updates, and events.htmx-recipes for active search, pagination, infinite scroll, polling,
dialogs, click-to-edit, boosted links, and other common patterns.htmx-security for XSS, sanitization, CSP, CSRF, and htmx history-cache risk.htmx-realtime for polling, SSE, and WebSocket tradeoffs.htmx-interactivity for Alpine.js coordination, event boundaries, and local
state outside replaceable targets.htmx-js-api for programmatic requests, htmx.process, and event wiring.Load only the files needed for the current task:
| Need | Read |
|---|---|
| Django view branching, response helpers, forms, validation | references/django-view-patterns.md |
| Template targets, swaps, OOB updates, Alpine events, recipe notes | references/template-interaction-patterns.md |
| Security rules, Django tests, response assertions, reference docs | references/testing-security.md |
request.htmx branching when the full page and
partial share the same query and permissions.frontend/templates/<app>/partials/... or the local app template folder.request.htmx.request.htmx only after the same auth, permission, and data-loading
path has run.@vary_on_headers("HX-Request") on cacheable views that return different
full-page and partial content for the same URL.django_htmx.http helpers over hand-writing HTMX headers:
HttpResponseClientRedirect, HttpResponseClientRefresh,
HttpResponseLocation, HttpResponseStopPolling, push_url(),
replace_url(), retarget(), reswap(), reselect(), and
trigger_client_event().{% csrf_token %}
in forms even when the base HTMX header is configured.200 unless the project explicitly handles 4xx or 422 swaps.DELETE.hx-push-url="true" only when the new state deserves a real browser URL,
and ensure the pushed URL can render a full page on direct load and refresh.hx-trigger="keyup" or polling without debounce, throttle, or a
clear stop condition.