Django 集成 vite

发布于 2023-08-26 17:38:51 字数 2009 浏览 32 评论 0

首先需要创建 template tag 将 vite 所引用的 js 注入到 django 的模版当中,路径: {app}/templatetags/vite.py

from django import template
from django.utils.safestring import mark_safe
from urllib.parse import urljoin
from django.conf import settings

register = template.Library()


@register.simple_tag
@mark_safe
def vite_module(path: str) -> str:
    src = urljoin(settings.VITE_URL, path if path is not None else "")
    return f'<script type="module" src="{src}"></script>'


@register.simple_tag
@mark_safe
def vite_client() -> str:
    src = urljoin(settings.VITE_URL, '/@vite/client')
    return f'<script type="module" src="{src}"></script>'


@register.simple_tag
@mark_safe
def vite_entry() -> str:
    src = urljoin(settings.VITE_URL, settings.VITE_ENTRY)
    return f'<script type="module" src="{src}"></script>'

settings.py 中配置两个变量:

VITE_URL = 'http://localhost:3000'
VITE_ENTRY = '/src/main.ts'

在 admin 视图中引入,复制 django 中的 changelist 模版到自己创建的 app 模板中,路径: {app}/templates/admin/{app}/change_list.html :

{% extends "admin/base_site.html" %}
{% load i18n admin_urls static admin_list vite %}

{% block extrastyle %}
    {% vite_client %}
    {% vite_entry %}
  {{ block.super }}
  <link rel="stylesheet" type="text/css" href="{% static "admin/css/changelists.css" %}">
  {% if cl.formset %}
    <link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}">
  {% endif %}
  {% if cl.formset or action_form %}
    <script src="{% url 'admin:jsi18n' %}"></script>
  {% endif %}
  {{ media.css }}
  {% if not actions_on_top and not actions_on_bottom %}
    <style>
      #changelist table thead th:first-child {width: inherit}
    </style>
  {% endif %}
{% endblock %}

{% load vite %} 加载自定义标签, {% vite_client %}{% vite_entry %} 使用标签,现在就可以使用 vite 了,并且 hot reload 自动刷新页面。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

文章
评论
26 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文