69 python django static-files django-staticfiles collectstatic
这可能是一个愚蠢的问题,但它并没有点击我的脑袋.
在Django中,惯例是将您的应用程序特有的所有静态文件(即css,js)放入名为static的文件夹中.所以结构看起来像这样:
mysite/
manage.py
mysite/ --> (settings.py, etc)
myapp/ --> (models.py, views.py, etc)
static/
Run Code Online (Sandbox Code Playgroud)
在mysite/settings.py我有:
STATIC_ROOT = 'staticfiles'
Run Code Online (Sandbox Code Playgroud)
所以当我运行命令时:
python manage.py collectstatic
Run Code Online (Sandbox Code Playgroud)
它在根级别创建一个名为staticfiles的文件夹(与myapp /目录相同)
这有什么意义?是不是只创建了我所有静态文件的副本?
bak*_*kal 58
那么,一个Django的项目可以使用多个应用程序,因此虽然你只有一个myapp,它实际上可能是myapp1,myapp2等
通过将它们从单个应用程序内部复制到单个文件夹中,您可以将前端Web服务器(例如nginx)指向该单个文件夹STATIC_ROOT并从单个位置提供静态文件,而不是将Web服务器配置为从多个路径提供静态文件.
关于MD5哈希附加到版本控制文件名的说明:它不是默认行为的一部分collectstatic,settings.STATICFILES_STORAGE默认为StaticFilesStorage(不执行此操作)
MD5哈希将启动,例如,如果您将其设置为使用ManifestStaticFilesStorage,该行为广告.
此存储的目的是在某些页面仍然引用这些文件的情况下继续提供旧文件,例如,因为它们是由您或第三方代理服务器缓存的.此外,如果您希望将远期的Expires标头应用于已部署的文件,以加快后续页面访问的加载时间,这将非常有用.
Kos*_*Kos 37
Django静态文件可以在很多地方.提供的文件/static/img/icon.png可能来自许多地方.默认情况下:
FileSystemFinder将寻找img/icon.png每一个STATICFILES_DIRS,AppDirectoriesFinder将img/icon.png在static你的每个子文件夹中查找INSTALLED_APPS.这允许像Django Admin这样的库将自己的静态文件添加到您的应用程序中.现在:这仅在您manage.py runserver使用DEBUG = 1 运行时才有效.当你上线时,Django进程将不再提供静态资产.使用Django来提供这些服务是低效的,还有更专门的工具.
相反,你应该做这样的事情:
static您的网络服务器上的某个目录或第三方文件存储)/static/*直接从该目录提供服务,并将任何其他请求重定向到Django.collectstatic 是一个现成的脚本,可以为您准备此目录,以便您可以将其直接连接到部署脚本.
Mik*_*maa 21
在生产安装中,您希望拥有永久URL.除非文件内容发生更改,否则URL不会更改.
这是为了防止客户端在从Django打开网页时在其计算机上安装错误版本的CSS或JS文件.Django staticfiles会检测文件更改并相应地更新URL,这样如果CSS或JS文件发生更改,Web浏览器会下载新版本.
这通常通过在collectstatic运行期间向文件名添加MD5哈希来实现.
编辑:另请参阅多个应用程序的相关答案.
| 归档时间: |
|
| 查看次数: |
32422 次 |
| 最近记录: |