在文档中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
放些什么.我要把它留空吗? ( ''
)
我的项目树
mysite
\articles
\static
\articles
\css
base.css
\static
\images
\css
default.css
\js
\templates
base.html
\settings.py
目前在我的 settings.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/'
最佳答案
几乎所有关于 django static 的东西都与 django.contrib.staticfiles
应用有关。尽管您需要自定义编辑许多设置才能使 staticfiles
正常工作,但实际操作很简单。它提供了一个 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 app静态文件的用户。您不希望 collectstatics 命令污染该目录,尤其是当您使用 git/svn 等版本控制系统时。
STATIC_ROOT
实际上取决于您托管这些静态文件的方式(Apache、Nginx、S3、CDN、Paas,如 heroku)
关于python - 处理与 Django 中的应用程序无关的静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22976596/