Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 处理与Django中的应用程序无关的静态文件_Python_Django - Fatal编程技术网

Python 处理与Django中的应用程序无关的静态文件

Python 处理与Django中的应用程序无关的静态文件,python,django,Python,Django,在文件中 我读到静态文件应该与各自的应用程序放在一起,并使用 {% load staticfiles %} <img src="{% static "articles/css/base.css" %}" alt="My image"/> 这是当前在my settings.py中关于静态文件的内容 # looks for static files in each app STATICFILES_FINDERS = ( 'django.contrib.staticfiles.f

在文件中

我读到静态文件应该与各自的应用程序放在一起,并使用

{% load staticfiles %}
<img src="{% static "articles/css/base.css" %}" alt="My image"/>
这是当前在my 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
应用程序相关。虽然您需要自定义编辑许多设置才能使
静态文件
正常工作,但它的作用很简单。它提供了一个
collectstatic
命令,可以从不同的应用程序收集静态文件,并将它们放在一个目录中

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

理由:首先,这是官方的方式。您可以在公文中找到以下代码:。其次,这是合理的。由于我们将仅在单个应用程序中使用的静态文件放在
project/appnane/static/…
下,因此项目的静态目录应该遵循相同的名称模式

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"), # That's it!!
    '/var/www/static/',
)
正如我在评论中所说,您不应该将
STATIC\u ROOT
设置为
project\u absolutr\u path/STATIC
。因为该目录是用于放置css应用程序静态文件的用户。您不希望collectstatics命令污染该目录,尤其是在使用git/svn之类的版本控制系统时


STATIC\u ROOT
实际上取决于您托管这些静态文件的方式(Apache、Nginx、S3、CDN、Paas等heroku)

老实说,关于静态文件的文档非常混乱,我用django已经有一段时间了。试着把
/static/
作为你的
static\u ROOT
我想他想表达的观点是关于网站安全的,但你可以稍后在I.m.o.处理这个问题。官方文件很清楚:我正在发布一个答案。请稍等几分钟我感谢你的努力!在我看来,
STATIC\u ROOT
确实取决于具体情况。如果我在heroku上托管这些文件呢?在heroku上,您没有访问apache/nginx的权限,因此必须使用django本身托管static,或者使用cdn。他们有一个关于它的详细文档。我只是感到困惑,因为我仍然不知道为
STATIC\u ROOT
输入什么,因为正如你所说,这取决于情况。如果你使用django本身在heroku上托管静态文件,那么将收集的文件放在项目目录下(而不是“STATIC”)是合理的。因此,您可以将STATIC_ROOT设置为
staticfiles
(或“asserts”)。我发布的链接()提到了这一点。
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"), # That's it!!
    '/var/www/static/',
)