我正在使用Mithril路由。当我通过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会改变它们。
这是我的网址模式:
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"),)
谢谢!
答案 0 :(得分:1)
您的<script>
src
属性包含相对网址,这是您看到的行为。这就是HTML的工作原理。要“修复”它,请将其设为绝对:
<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>