当前位置: 首页 > 面试题库 >

Django的collectstatic有什么意义?

艾浩广
2023-03-14
问题内容

这可能是一个愚蠢的问题,但这不是在我的脑海中点击。

在Django中,惯例是将特定于应用程序的所有静态文件(即css,js)放入名为static的文件夹中。所以结构看起来像这样:

mysite/
    manage.py
    mysite/ --> (settings.py, etc)
    myapp/ --> (models.py, views.py, etc)
        static/

mysite/settings.py我有:

STATIC_ROOT = 'staticfiles'

因此,当我运行命令时:

python manage.py collectstatic

它会staticfiles在根目录下创建一个文件夹(与相同的目录myapp/)

这有什么意义呢?它不只是创建我所有静态文件的副本吗?


问题答案:

将来自多个应用程序的静态文件收集到一个路径中
那么,一个Django的项目可以使用多个应用程序,因此虽然你只有一个myapp,它实际上可能是myapp1myapp2

通过将它们从单个应用程序内部复制到单个文件夹中,你可以将前端Web服务器(例如nginx)指向该单个文件夹STATIC_ROOT并从单个位置提供静态文件,而不是将Web服务器配置为从多个路径提供静态文件。

带有ManifestStaticFilesStorage的永久URL
关于将MD5哈希附加到文件名以进行版本控制的说明:它不是默认行为的一部分collectstatic,因为settings.STATICFILES_STORAGE默认为StaticFilesStorage(不这样做)

例如,如果你将MD5哈希值设置为使用ManifestStaticFilesStorage,则该哈希值将开始播放,从而使该行为成为广告。

这种存储的目的是在某些页面仍引用那些文件的情况下继续提供这些旧文件,例如,因为它们是由你或第三方代理服务器缓存的。此外,如果你想将远期的Expires标头应用于已部署的文件,以加快后续页面访问的加载时间,这将非常有帮助。



 类似资料:
  • 我最近将django升级到了3.2.5版本,之后管理模板没有正确加载,尤其是在模型页面中,请查看屏幕截图, 我决定参选, 但我收到以下错误 回溯(最近一次调用):File"/var/www/run_from_argv",第21行,main()File"/var/www/cmd_options",第17行,mainexecute_from_command_line(_options)File"/va

  • 问题内容: 如果我已经在大多数主流浏览器中测试过我的页面,为什么我需要维护一个经过验证的代码?如果WebKit浏览器和Firefox支持框阴影和拐角半径,我想使用它们。我不在乎它们是否不会出现在Internet Explorer中。但是我通过不包含图像来降低HTTP请求的数量。 有效代码是否有优势?在搜索引擎优化还是其他方式? 问题答案: Google更喜欢它,因此对SEO很有好处。 它使您的网页

  • 我正在使用和遇到了一个奇怪的错误。 我最初的IAM策略非常保守,只包括对象的get、put和delete。 -- 然后我授予了除删除和创建bucket之外的所有权限 -- 我终于给了完全权限,我想避免,我不再得到403错误。 我已经尝试根据此答案提供对桶根和的访问权限 我的目标是只授予必要的权限。

  • 在Apache Tomcat中,参数URIEncoding告诉Tomcat如何解释传入的URI: 编码 这指定在%xx解码URL后用于解码URI字节的字符编码。如果没有规定,将使用ISO-8859-1。 Apache Tomcat 7-HTTP连接器 然而,正如在URL编码Unicode字符的正确方法是什么中所解释的那样,URI中的非ASCII字符始终按照当前标准(RFC 3986和3987)以U

  • 我在学码头工人。我多次看到有命令: 难道我就不能省略和而只在项目的根目录中放置我的吗?使用这种方法的缺点是什么?

  • 问题内容: 我是使用JAXB的新手,并且使用JAXB 2.1.3的xjc从我的XML模式生成一组类。除了为我的架构中的每个元素生成一个类之外,它还创建了一个ObjectFactory类。 似乎没有什么阻止我直接实例化元素的,例如 而教程似乎更喜欢 如果查看ObjectFactory.java,我会看到: 那怎么办?为什么我还要麻烦保持ObjectFactory类?我假设如果我从更改后的模式重新编译