【问题标题】:Static url goes after the regular page url静态 url 在常规页面 url 之后
【发布时间】:2020-08-03 12:51:32
【问题描述】:

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

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 "我所有的 url 都在主目录中,然后我从应用程序中导入视图"

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 文件中扩展。

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

【问题讨论】:

  • 您应该在每个模板(或基本模板)的顶部提及{% load static %} 以加载静态文件...
  • @SwetankPoddar:我不相信这是问题所在,否则这将如何首先生成 href?

标签: django django-staticfiles


【解决方案1】:

您应该在STATIC_URL setting [Django-doc] 前面加上一个斜杠

# settings.py

# …
# with a leading slash
STATIC_URL = '/static/'
# …

如果您不这样做,则 url 将类似于 static/js/main.js。如果路径不是以斜杠开头,那么就是 relativecurrent URL 的路径,因此如果页面是 /categories/default,它将查看 @987654326 @。

【讨论】:

  • 谢谢你。 url 问题确实得到了解决,但静态文件随后得到 404,即使在主页上也是如此。知道是什么原因造成的吗?
  • @YankiSegal:您的文件存储在static_root/js/main.js?文件本身到底存储在哪里(相对于您的项目的基础)?
  • 没关系,问题是我将静态目录更改为 '/static/base' 最后忘记移动文件我很抱歉,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-19
  • 1970-01-01
  • 1970-01-01
  • 2012-11-05
  • 2014-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多