在django开发模式中搜索静态文件夹

时间:2013-11-19 07:49:11

标签: python django django-staticfiles

我在开发模式下搜索多个文件夹中的静态文件时遇到了麻烦。

当然我知道使用os.path.listdir或其他方法执行搜索的简单方法,但我正在寻找一种尽可能保持开发和生产代码一致的方法。

我有以下情况: 多个应用程序具有单独的静态文件夹和项目范围的静态文件夹,工作正常。

但我有一个查找特定文件的方法,我想确保搜索所有文件夹。 当然,我可以通过阅读settings.STATICFILES_DIR[]构建这些路径并找出应用程序有'static/'个文件夹,但我想知道这是否意味着重新发明轮子。

是否有一种特殊的开发模式方法,可以提供所有可用静态文件夹的列表或类似内容?

如果可能的话,我想避免在我的代码中使用特殊的调试案例,因为它对我来说似乎不是非常pythonic。但如果我在这里错了,请纠正我。

1 个答案:

答案 0 :(得分:0)

为什么要在开发模式下搜索静态文件?

使用方便:

python manage.py colelctstatic -l

就像在制作中一样。

Django开发服务器服务静态非常慢。 而且你不经常添加静态文件。 在未加载静态文件时不要忘记输入此命令将会很困难。但随着时间的推移,你会记住它并且会很开心。相信我;)

我使用这样的nginx配置:

server {
    server_name my-site.de;

    location /{
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 10;
        proxy_read_timeout 10;
        proxy_pass http://localhost:8021/;  #<- unique port for project    
    }

    location /static {
        autoindex off;
        alias /home/noname/develop/my-site/my-site/proj_static;
        if ($query_string) {
            expires max;
        }
    }

    location ^~ /media/ {
        autoindex off;
        alias /home/noname/develop/my-site/my-site/media/;
        if ($query_string) {
            expires max;
        }
    }
}

在/ etc / hosts中有记录: 127.0.0.1 my-site.de

我开发的每个网站。 因此,只需在网址中将“com”更改为“de”即可轻松打开本地版本。

如果你向manage.py添加一些行:

if sys.argv[1] == 'runserver' and len(sys.argv)==2:
    sys.argv.append('0.0.0.0:8021')

您可以同时运行多个项目,并通过URL访问它们,如: http://project1.dehttp://project2.de