当前位置:  开发笔记 > 编程语言 > 正文

Django的收藏有什么意义?

如何解决《Django的收藏有什么意义?》经验,为你挑选了4个好方法。

这可能是一个愚蠢的问题,但它并没有点击我的脑袋.

在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 /目录相同)

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



1> bakkal..:

将多个应用程序中的静态文件收集到一个路径中

那么,一个Django的项目可以使用多个应用程序,因此虽然你只有一个myapp,它实际上可能是myapp1,myapp2

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

使用ManifestStaticFilesStorage的持久URL

关于MD5哈希附加到版本控制文件名的说明:它不是默认行为的一部分collectstatic,settings.STATICFILES_STORAGE默认为StaticFilesStorage(不执行此操作)

MD5哈希将启动,例如,如果您将其设置为使用ManifestStaticFilesStorage,该行为广告.

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


您想说的是,很容易找到Web服务器来提供静态内容

2> Kos..:

Django静态文件可以在很多地方.提供的文件/static/img/icon.png可能来自许多地方.默认情况下:

FileSystemFinder将寻找img/icon.png每一个STATICFILES_DIRS,

AppDirectoriesFinderimg/icon.pngstatic你的每个子文件夹中查找INSTALLED_APPS.这允许像Django Admin这样的库将自己的静态文件添加到您的应用程序中.

现在:这仅在您manage.py runserver使用DEBUG = 1 运行时才有效.当你上线时,Django进程将不再提供静态资产.使用Django来提供这些服务是低效的,还有更专门的工具.

相反,你应该做这样的事情:

查找每个应用程序的所有静态文件

构建一个包含所有目录的目录

将它们上传到某处(static您的网络服务器上的某个目录或第三方文件存储)

配置您的网络服务器(如nginx)/static/*直接从该目录提供服务,并将任何其他请求重定向到Django.

collectstatic 是一个现成的脚本,可以为您准备此目录,以便您可以将其直接连接到部署脚本.



3> Mikko Ohtama..:

在生产安装中,您希望拥有永久URL.除非文件内容发生更改,否则URL不会更改.

这是为了防止客户端在从Django打开网页时在其计算机上安装错误版本的CSS或JS文件.Django staticfiles会检测文件更改并相应地更新URL,这样如果CSS或JS文件发生更改,Web浏览器会下载新版本.

这通常通过在collectstatic运行期间向文件名添加MD5哈希来实现.

编辑:另请参阅多个应用程序的相关答案.


我认为默认情况下没有MD5散列,因为`settings.STATICFILES_STORAGE`默认为`StaticFilesStorage`,所以只有在你将它设置为`ManifestStaticFilesStorage`之后,MD5才会启动,我是否正确?

4> aa333..:

当网站中有多个django应用程序时,它很有用.

collectstatic 然后将在一个地方收集来自所有应用程序的静态文件 - 以便它可以在生产环境中提供.

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有