静态 url 在常规页面 url 之后

Static url goes after the regular page url

我的静态文件只在索引页面上加载,但是当导航到另一个页面时:examle_url/page,它 returns 一个 404 错误,因为它是这样加载的:http://127.0.0.1:8000/categories/default/static/js/main.js,查看 page

后的静态负载

settings.py

STATIC_URL = 'static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static_root/')


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

urls.py "all my urls are in main directory and then i import views from apps"

urlpatterns = [
    path('admin/', admin.site.urls),
    path('profile/', profile, name="profile"),
    path('', index, name="index"),
    path('category/', category, name="category"),
]

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

如果重要的话,我的加载静态文件都在 theme.html 文件中,然后在所有其他 html 文件中扩展。

任何帮助将不胜感激,在此先感谢!

您应该在 STATIC_URL setting [Django-doc] 前添加一个 斜线 :

# settings.py

# …
# with a <i>leading</i> slash
STATIC_URL = <b>'/static/'</b>
# …

如果您不这样做,那么 url 将看起来像 static/js/main.js。如果路径不以斜杠开头,那么就是 relativecurrent URL 的路径,因此如果页面是/categories/default,它会查看/categories/default/static/js/main.js