【问题标题】:Managing Django static files: with django-static or django-staticfiles?管理 Django 静态文件:使用 django-static 还是 django-staticfiles?
【发布时间】:2010-06-21 17:32:34
【问题描述】:

经过一番谷歌搜索后,我发现这些项目有助于提供静态文件:django-staticNginxdjango-staticfiles

有没有人对这两种方法中的一种或两种方法都有经验,并且可以推荐其中一种或第三种方法?

【问题讨论】:

    标签: django


    【解决方案1】:

    处理静态文件的常用方法实际上不是通过 django 发送它们,而是让 Web 服务器(例如 apache 或 ngingx)处理它们。我提供了一个 mod_wsgi 的小例子,基于官方 django 文档,发现 here

    Alias /media/ /usr/local/wsgi/static/media/
    
    <Directory /usr/local/wsgi/static>
    Order deny,allow
    Allow from all
    </Directory>
    
    WSGIScriptAlias / /usr/local/wsgi/scripts/django.wsgi
    
    <Directory /usr/local/wsgi/scripts>
    Order allow,deny
    Allow from all
    </Directory>
    

    第一个语句确保 /media 中的所有文件都将直接通过 apache 提供,而不是 django。第二条语句用于设置 django 站点本身。现在,使用这些媒体文件不需要经过 django 处理,这通常非常缓慢。

    存在静态文件服务器的原因主要是为了开发或非常简单的部署。

    【讨论】:

    • 有关详细信息,请参阅the Django documentation page on serving static files。我看到推荐的一件事是对静态文件使用完全不同的 Web 服务器,例如使用 lighttpd。这就是为什么 MEDIA_ROOTMEDIA_URL 假设没有与 Django 服务器共享资源,甚至没有服务器本身(以及为什么初始 settings.py 文件中的 cmets 显示完整的 URL 作为示例)。
    • 好的,谢谢。现在开始有意义了。
    • 后续问题:那这两个静态项目的意义何在?
    • peterbe 的项目实际上是关于缓存和压缩的,如果我没记错的话,可以与这种方法一起使用。另一个还提供帮助功能来收集文件路径。这使得从多个应用程序收集媒体文件并将它们放在一个简单的静态文件夹中变得容易。同样,您可以将它与这种方法一起使用:)。
    猜你喜欢
    • 2018-04-14
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 2014-12-10
    • 2014-10-31
    • 2021-01-06
    相关资源
    最近更新 更多