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>
我正在通过秘银使用路由。当我通过 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>