Два инструмента, две задачи

Tailwind — это utility-CSS: элементы оформляются классами вроде rounded px-4 py-2. crispy-forms — приложение Django, которое выводит формы как HTML. Вместе они заменяют ручной CSS и голый вывод {{ form.as_p }}.

Tailwind сканирует исходники и собирает один CSS-файл
Tailwind сканирует исходники и собирает один CSS-файл
ЧастьНа какой вопрос отвечает
Tailwindкак выглядят элементы
crispy-formsкакую разметку даёт форма
crispy-tailwindкакие классы Tailwind использует эта разметка

Tailwind без Node

Tailwind v4 поставляется как автономный исполняемый файл, поэтому npm в проекте Django не нужен. Создайте входной файл:

css
/* static/src/input.css */
@import "tailwindcss";

@source "../../templates";
@source "../../blog";

@theme {
  --color-brand: #2563eb;
}

Запустите бинарник (скачайте его в релизах Tailwind на GitHub):

bash
# get the binary: tailwindlabs/tailwindcss releases
# development: rebuild on every change
./tailwindcss -i static/src/input.css -o static/css/app.css --watch

# production: one minified file
./tailwindcss -i static/src/input.css -o static/css/app.css --minify

Подключите результат к Django:

python
# settings.py
STATIC_URL = "static/"
STATICFILES_DIRS = [BASE_DIR / "static"]
html
{% load static %}
<link rel="stylesheet" href="{% static 'css/app.css' %}">