gpt4 book ai didi

python - 在 Django 中处理静态文件

转载 作者:太空宇宙 更新时间:2023-11-04 06:04:31 25 4
gpt4 key购买 nike

目前我的 settings.py 是这样设置的静态文件

STATIC_ROOT = ''

STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

STATICFILES_DIR = (
os.path.join(BASE_DIR, 'static'),
)

STATIC_URL = '/static/'

通过阅读文档和各种博客,我的理解是 STATIC_ROOT 是静态文件所在的位置。它是目录的绝对路径,collectstatic 将收集用于部署的静态文件 (OUTPUT)。我不确定该将此值设为什么

对于 STATICFILES_DIR 如果启用了 FileSystemFinder 查找器,此设置定义了静态文件应用程序将遍历的其他位置。所以我需要在我的 settings.py 中有一个 STATICFILES_FINDER 字段,并且在该字段中将是

('django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder')

但是,默认情况下 STATICFILES_DIR 不包含在我的 settings.py 中,所以我将其添加进去。

STATIC_URL 是引用位于 STATIC_ROOT 中的静态文件时使用的 URL。我只是将其保留为默认设置,因为我不确定如何对其进行编辑。

我不确定如何编辑有关静态文件的 settings.py 以便将它们显示在网页上。将静态文件包含到网页中的“最佳实践”方法是什么?

例如:{% static "static/css/default.css"%}

我也阅读了一些关于命名空间的内容,但我对此也感到困惑

例如:

STATICFILES_DIR = (
("asserts", os.path.join(BASE_DIR, 'static')),
)

最佳答案

最佳做法是将每个应用的静态文件保存在它自己的“静态”目录中,并在每次静态文件更改时运行 manage.py collect_static

然后,如果您使用默认存储,您的文件将被复制到 STATIC_ROOT 目录中。(但您可能会使用自定义存储,例如在 Amazon S3 云上存储静态文件)

最后,STATIC_URL 定义了如何从外部访问您的静态文件。在 django 开发服务器的情况下——它有静态文件应用程序,在 STATIC_URL 位置下为它们提供服务。在生产服务器的情况下,您肯定希望使用 nginx/apache 或使用 amazon S3/cloudfront(或其他云服务)提供静态文件。如果你使用 nginx/apache 服务,你必须设置 STATIC_URL 这样 {% static "static/css/default.css"%} 将被替换为相对于 STATIC_ROOT 的 url,同时你应该在 nginx/apache 设置中覆盖这个 STATIC_URL 位置,所以当最终用户尝试访问它时,它会得到静态文件服务,甚至不接触 django。在自定义存储的情况下 - 此存储可能会提供它自己的 url(例如到 S3 云)。

关于python - 在 Django 中处理静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22953601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com