首页
/ daisyUI 在 Django 项目中的落地实践:Tailwind CSS 组件库与服务器渲染架构的整合指南

daisyUI 在 Django 项目中的落地实践:Tailwind CSS 组件库与服务器渲染架构的整合指南

2026-09-05 12:18:30作者:翟萌耘Ralph

本文基于 daisyUI 官方文档中「Django component library」页面及配套安装文档,讲解如何在 Django 项目中引入 daisyUI 组件库。读完本文,你将掌握 daisyUI 与 Django 模板、表单、静态资源管线的整合原理,并能独立完成从零搭建(含无 Node.js 环境的 Python-only 方案)到主题定制的全流程。

为什么 Django 是 daisyUI 的理想宿主

daisyUI 是构建在 Tailwind CSS 之上的开源组件库(当前仓库版本见 packages/daisyui/package.json,为 5.7.27)。它不需要任何前端框架即可工作——组件全部以纯 CSS 类名的形式存在,这使它天然适配服务器渲染型架构。

Django 作为 Python 后端框架,围绕「约定优于配置」和「全家桶」理念构建,内置了路由、模板、表单、认证、安全特性、ORM、迁移和 Django Admin。对于构建数据密集型应用,这种完整度意味着团队无需在核心组件上反复选型。Django 的模板系统也是服务器渲染页面的强力载体:在服务器端渲染出完整 HTML,按需添加少量交互,并把业务工作流保持在 Python 一侧。

这两者的结合点在于:daisyUI 直接为 Django 已经渲染出的 HTML 标记上色,而不要求你把 Django 应用改造成 JavaScript 应用。

Django + daisyUI 的四个实用优势

官方文档总结了这套组合的核心价值:

  • 模板友好的类名btninputselecttablealert 等语义化类名让 Django 模板保持可读,模板中不会出现大段原子类堆砌。
  • 兼容服务器渲染 HTML:无论页面是纯模板、HTMX 增强,还是附带少量客户端脚本,daisyUI 都能为 Django 渲染出的标记提供样式。
  • 表单场景契合:Django 负责校验与错误处理,daisyUI 负责表单的布局与状态样式(例如 daisyUI 的 validator.css 组件即为表单校验状态设计)。
  • 主题持久化:可把用户选择的主题存入 session、cookie 或用户资料,再在 layout 层统一应用,实现全站主题切换。

组件的完整样式定义位于 packages/daisyui/src/components/ 目录,每个组件对应一个 CSS 文件(如 button.cssalert.cssinput.css 等),这些组件最终被编译进发布产物 packages/bundle/daisyui.mjs

安装路径选择:Node 方案与 Python-only 方案

daisyUI 在 Django 中的安装方式取决于你的静态资源管理策略,官方文档给出两条路线:

方案 依赖 适用场景
Node 方案 Node.js + Tailwind CSS CLI + daisyui npm 包 前端工程化完整的项目,用 @plugin "daisyui" 在 PostCSS 配置中启用
Python-only 方案 仅 Python + Tailwind CSS Standalone 可执行文件 + daisyUI bundle 文件 无 Node 环境的部署机、纯 Python 团队,直接走 Django 静态文件管线

从源码结构看,Python-only 方案的可行性来自仓库中的 packages/bundle/ 目录:daisyUI 官方发布了独立的 daisyui.mjs(约 349KB 的完整组件样式 bundle)和 daisyui-theme.mjs(主题插件 bundle),它们不依赖 npm 安装,可直接放在静态目录中被 Tailwind CSS Standalone 的 @plugin 指令引用。仓库内的 packages/docs/static/fast 安装脚本印证了这一机制:它下载 Tailwind CSS Standalone 可执行文件、daisyui.mjsdaisyui-theme.mjs 两个 bundle,生成 input.css 并编译出 output.css,全程无需 npm。

完整的分步操作以官方安装文档 Install daisyUI for Django/docs/install/django/+page.md) 为准,下文继承其全部步骤。

第 1 步:创建 Django 项目

python -m pip install Django

创建名为 myapp 的 Django 项目并进入目录:

django-admin startproject myapp
cd myapp

第 2 步:创建首页

创建模板文件 myapp/templates/index.html,头部引入编译产物 output.css,正文使用 daisyUI 的按钮组件:

<!DOCTYPE html>
<html>
<head>
    <title>My Django App</title>
    {% load static %}
    <link href="{% static 'css/output.css' %}" rel="stylesheet" type="text/css" />
</head>
<body>
    <button class="btn btn-primary">Hello daisyUI</button>
</body>
</html>

创建 myapp/views.py

from django.shortcuts import render

def home(request):
    return render(request, 'index.html')

myapp/urls.py 中注册路由:

  from django.contrib import admin
  from django.urls import path
+ from . import views

  urlpatterns = [
      path("admin/", admin.site.urls),
+     path("", views.home, name="home"),
  ]

并将应用名加入 myapp/settings.pyINSTALLED_APPS

  INSTALLED_APPS = [
      "django.contrib.admin",
      "django.contrib.auth",
      "django.contrib.contenttypes",
      "django.contrib.sessions",
      "django.contrib.messages",
      "django.contrib.staticfiles",
+     "myapp",
  ]

第 3 步:添加 Tailwind CSS 和 daisyUI

快速安装(Fast install)

以下命令会自动:下载当前操作系统对应的 Tailwind CSS Standalone 可执行文件、下载 daisyUI bundle 文件、创建包含 Tailwind 与 daisyUI 配置的 input.css,并首次生成 output.css

Linux 或 MacOS(脚本源码见 packages/docs/static/fast,脚本会检测操作系统与 CPU 架构,自动识别 musl 环境并选择对应二进制):

cd myapp/static/css && curl -sL daisyui.com/fast | bash

Windows(对应脚本见 packages/docs/static/fast.ps1):

powershell -c "irm daisyui.com/fast.ps1 | iex"

手动安装(Manual install)

若不使用快速脚本,可按以下步骤手动完成。

1)获取 Tailwind CSS 可执行文件,把对应平台的二进制下载到静态目录(按操作系统选择其一):

# Linux
curl -sLo myapp/static/css/tailwindcss https://github.com/tailwindlabs/tailwindcss/releases/latest/download/tailwindcss-linux-x64
# macOS
curl -sLo myapp/static/css/tailwindcss https://github.com/tailwindlabs/tailwindcss/releases/latest/download/tailwindcss-macos-arm64
# Windows
curl -sLo myapp/static/css/tailwindcss.exe https://github.com/tailwindlabs/tailwindcss/releases/latest/download/tailwindcss-windows-x64.exe

在 Linux 和 macOS 上赋予执行权限:

chmod +x myapp/static/css/tailwindcss

2)下载 daisyUI bundle JS 文件,与 Tailwind 可执行文件放在一起:

curl -sLo myapp/static/css/daisyui.mjs https://github.com/saadeghi/daisyui/releases/latest/download/daisyui.mjs
curl -sLo myapp/static/css/daisyui-theme.mjs https://github.com/saadeghi/daisyui/releases/latest/download/daisyui-theme.mjs

3)编写 input.css,声明 Tailwind CSS 与 daisyUI 插件,并在 @source not 中排除 bundle 与可执行文件自身,避免被当作模板扫描:

@import "tailwindcss";

@source not "./tailwindcss";
@source not "./daisyui{,*}.mjs";

@plugin "./daisyui.mjs";

/* 可选:自定义主题 —— 参考 daisyUI 主题文档的 "How to add a new custom theme" */
@plugin "./daisyui-theme.mjs"{
  /* custom theme here */
}

从仓库产物结构看,daisyui.mjs 内部已内联了全部主题的 CSS 变量定义(各主题以 oklch 颜色函数声明 --color-primary--color-base-100 等变量,完整主题顺序见 packages/bundle/daisyui.mjs 开头的 themeOrder 列表);而 daisyui-theme.mjs 导出的是一个支持 withOptions 的 PostCSS 插件(见 packages/daisyui/functions/themePlugin.js),因此在 input.css 中可用花括号语法为它传入自定义主题配置,这是两个 bundle 分工的关键。

第 4 步:运行 Tailwind CSS 生成 output.css

myapp/static/css/tailwindcss -i myapp/static/css/input.css -o myapp/static/css/output.css --watch
# Windows
myapp\static\css\tailwindcss.exe -i myapp\static\css\input.css -o myapp\static\css\output.css --watch

--watch 参数会在 input.css 变更时自动重新编译;在 CI/CD 流水线中应去掉 --watch,只做一次性构建。

第 5 步:启动 Django 开发服务器

在另一个终端中运行:

python manage.py runserver

此时访问首页,btn btn-primary 按钮即呈现 daisyUI 样式,daisyUI 类名可以直接用于 Django 模板、表单、partials 及 Admin 相邻页面。

主题持久化:在 Django 中实现全站换肤

文档提到可将选中主题存入 session、cookie 或用户资料并在 layout 层应用。结合 daisyUI 的实现方式,一个典型做法是:模板变量控制 <html> 上的 data-theme 属性,如 data-theme="{{ request.session.theme }}",因为 daisyUI 的主题全部通过 CSS 变量([data-theme=...] 选择器下声明 --color-* 系列变量,见 packages/daisyui/src/themes/ 下各主题 CSS)驱动,切换属性即可全局换肤,无需额外 JS 干预。若项目还希望提供运行时主题 API,可另行引入 daisyui-theme.mjs 导出的主题能力;但仅靠静态编译产物,data-theme 方式已足够。

小结

  • daisyUI 对 Django 的价值在于零前端框架依赖:组件类名直接进入模板,服务器渲染的 HTML 即可获得完整 UI。
  • 官方支持两条安装路线:Node 方案(@plugin "daisyui")与 Python-only 方案(Tailwind CSS Standalone + daisyui.mjs bundle),后者适合无 Node 的纯 Python 环境。
  • 编译链路为 input.css@import "tailwindcss" + @plugin "./daisyui.mjs")→ output.css,由 Django 的 {% static %} 管线分发。
  • 主题通过 data-theme 属性 + CSS 变量实现,可结合 session/cookie 做持久化。
  • 进一步细节请参考官方安装文档 Install daisyUI for Django/docs/install/django/+page.md) 与仓库内 packages/bundle/ 发布产物。
登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.12 K
2.72 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
528
588
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
906
1.83 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
854
1.34 K
docsdocs
暂无描述
Markdown
891
5.78 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.53 K
1.01 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.34 K
1.45 K
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
987
506
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
540
384