Django vs Mithril url 路由

Django vs Mithril url routing

我正在通过秘银使用路由。当我通过 javascript 路由到 mysite.com/subpage/item3 时,静态文件 '/static/app.bundle.js' 保持加载状态,并按预期显示子页面 html。

m.route(document.body, "/", {
    "/": Home,
    "/subpage": Subpage,
    "/subpage/:focus": Subpage,
    "/:focus": Home
});

但是,当我从初始页面加载导航到 mysite.com/subpage/item3 时,Django 启动并尝试从“/subpage/static/app.bundle.js”加载静态文件.这会导致 404 错误。我设置了 STATIC_URL 和 STATICFILES_DIRS,但我不明白 Django 为什么要更改它们。

这是我的 url 模式:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.index, name='index'),
    path('<url>', views.index, name='index'),
    path('<url>/<suburl>', views.index, name='index')
]

这是我的静态文件设置:

STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),)

谢谢!

您的 <script>src 属性包含一个相关的 URL,这就是您所看到的行为。这就是 HTML 的工作原理。要"fix"它,让它绝对化:

<script type="text/javascript" src="/static/app.bundle.js" type="module"></script>
                                    ^----add this

手动构建 URL 的缺点是会完全绕过 Django 的 STATIC_URL 设置并阻止您在生产中透明地切换到不同的 URL。我建议您阅读 static files 上的 Django 文档。最后,你将能够做到这一点:

<script type="text/javascript" src="{% static "app.bundle.js" %}" type="module"></script>