2

是的,我希望它像在 Flask 框架中一样工作 - 我可以设置如下参数:

static_folder=os.getcwd()+"/static/", static_url_path=""

并且其中的所有文件./static/files/blabla.bla都可以通过mysite.com/files/blabla.bla地址访问。我真的不想在static后面添加mysite.com

但是如果我STATIC_URL = '/'在 Django 中设置,那么我可以通过这个地址获取我的静态文件,但是突然之间我无法获取我在urls.py.

4

2 回答 2

1

我相信这是不支持开箱即用的。在我的脑海中,一种方法是使用特殊的 404 处理程序,该处理程序未能与任何已定义的 URL 匹配,将请求视为对静态资源的请求。这在开发环境中相当容易做到,但当涉及到 nginx、Apache 和/或 gunicorn 时,难度要大得多。

换句话说,不要这样做。嵌套您的静态数据(或将它们放在不同的子域中),但不要以这种方式混合 URL 层次结构。

于 2013-02-15T20:04:45.323 回答
1

使用 Nginx 使用 try_files 很容易做到这一点。使用下面的伪设置将使 Nginx 首先尝试查找静态文件,如果失败,则将执行传递给您的 django 应用程序。

server {
  ...
  root /some/path/to/assets/;
  try_files $uri @django;

  location @django {
    ...
    proxy_pass  http://unix:/some/path/to/server.sock;
  }
}

示例:该文件/some/path/to/assets/myfile.ext将作为http://mydomain/myfile.ext

于 2013-02-15T23:43:24.897 回答