【问题标题】:Django absolute url works but relative url does not for static filesDjango绝对网址有效,但相对网址不适用于静态文件
【发布时间】:2012-12-14 06:26:39
【问题描述】:

如果这是一个基本问题,我已经四处寻找并道歉。我正在尝试让我的 django 应用程序提供静态文件。如果 STATIC_URL 设置为绝对路径(即http://localhost/static),则文件可以工作,但是如果 STATIC_URL 是相对的,例如 /static/,它不会拉入任何静态文件。

当我将应用程序移动到生产服务器并有一个反向代理服务静态文件时,我希望它能够使用 /static/。

【问题讨论】:

  • /static/ 不是相对的。那是绝对的。文件系统中的一个目录...cd /static/。收听 Topro (sorta) 以了解设置相对于项目根目录的绝对目录的典型设置。
  • 对不起,我的意思是在这篇文章中说 STATIC_URL。 STATIC_ROOT 设置正确,但页面不会找到文件,除非 STATIC_URL 是带有域名的完整 url。
  • 请求是否发送到正确的位置? (渲染的 HTML 看起来不错?)
  • 使用 {{STATIC_URL}} 的 url 看起来不错,但 django 根本找不到它们,除非它们具有完整的域和路径。像 /static/ 这样的任何东西都会给出 404。基本上:STATIC_URL=http://foobar/static 很好 STATIC_URL=/static/ 是 404 由于某种原因,这个变量是我的应用程序查找静态文件的全部或全部。

标签: python django web static


【解决方案1】:

django 要求 STATIC_DIR 是绝对路径。

PROJECT_DIR 之类的变量设置为os.path.dirname(os.path.realpath(__file__))

然后将STATIC_DIR 设置为os.path.join(PROJECT_DIR, 'static')

【讨论】:

    猜你喜欢
    • 2010-10-28
    • 2019-06-25
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多