Django:如何让STATIC_URL变空?

时间:2013-02-15 19:34:14

标签: python django

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

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

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

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

2 个答案:

答案 0 :(得分:1)

我相信这不是开箱即用的。在我的头脑中,一种方法是使用特殊的404处理程序,它无法与任何已定义的URL匹配,将请求视为对静态资源的请求。这在开发环境中相当容易,但是当nginx,Apache和/或gunicorn参与时会更加困难。

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

答案 1 :(得分:1)

使用try_files,使用Nginx很容易实现。使用下面的伪设置将使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

的形式提供