处理不属于Djang应用程序的静态文件

2024-04-27 00:50:03 发布

您现在位置:Python中文网/ 问答频道 /正文

在文档https://docs.djangoproject.com/en/dev/howto/static-files/

我读到静态文件应该放在它们各自的应用程序中,并被调用

{% load staticfiles %}
<img src="{% static "articles/css/base.css" %}" alt="My image"/>

但是后来在文档中提到一些静态文件并不属于特定的应用程序。这就是STATICFILES_DIRS发挥作用的地方。如果我读得正确,STATICFILES_DIRS是Django用来查找其他静态文件的元组。我想知道如何调用从STATICFILES_DIRS调用的静态文件?在

有点像

<link rel="stylesheet" type="text/css" href="{% static "/css/default.css" %}">

我也不知道我的STATIC_ROOT该放什么。我要空着吗?(''

我的项目树

^{pr2}$

这是当前在我的设置.py关于静态文件

# looks for static files in each app
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

STATICFILES_STORAGE = (
    'django.contrib.staticfiles.storage.StaticFilesStorage'
)

# the absolute path to the directory where collectstatic will collect static files for deployment (OUTPUT)
STATIC_ROOT = ''

# This setting defines the additional locations the static files app will traverse if the FileSystemFinder finder is enabled.
STATICFILES_DIRS = (
    # used for static assets that aren't tied to a particular app
     os.path.join(BASE_DIR, 'static'),
)

# URL to use when referring to static files located in STATIC_ROOT
STATIC_URL = '/static/'

Tags: 文件thetodjangoappfor静态static
1条回答
网友
1楼 · 发布于 2024-04-27 00:50:03

几乎所有关于django static的东西都与django.contrib.staticfiles应用程序有关。尽管您需要自定义编辑许多设置才能使staticfiles正常工作,但is的操作很简单。它提供了一个collectstatic命令,该命令从不同的应用程序收集静态文件并将它们放入一个目录中。在

第一个问题的答案很简单:将这些常见的静态文件放在django项目目录的/static目录下。在您的例子中,它是mysite/static。在

理由:首先,这是官方的方式。您可以在官方文档中找到以下代码:Managing static files (CSS, images)。其次,这是合理的。因为我们将静态文件只在一个应用程序中使用在project/appnane/static/...下,所以项目的静态目录应该遵循相同的名称模式。在

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"), # That's it!!
    '/var/www/static/',
)

正如我在评论中所说,您不应该将STATIC_ROOT设置为project_absolutr_path/static。因为那个目录是用户放置css应用程序的静态文件。您不希望collectstatics命令污染该目录,尤其是在使用git/svn之类的版本控制系统时。在

STATIC_ROOT实际上取决于您托管这些静态文件的方式(Apache、Nginx、S3、CDN、像heroku一样的Paas)

相关问题 更多 >