我已阅读django static files document并制作了像我这样的django静态文件设置
setting.py
PROJECT_PATH = os.path.realpath(os.path.dirname(__file__))
STATIC_ROOT = os.path.join(PROJECT_PATH, 'static')
STATIC_URL = '/static/'
html页面
<img src="{% static "admin/img/author.jpg" %}" alt="My image"/>
因此,如果我解决django默认静态文件之一,它可以正常工作。但是,如果我将自己的文件和文件夹添加到static
文件夹,则不会显示它。
我试过
python manage.py collectstatic
但没有改变。我怎样才能使它发挥作用?
答案 0 :(得分:4)
一些事情......
STATICFILES_DIRS = (
'path/to/files/in/development',
)
STATIC_ROOT = 'path/where/static/files/are/collected/in/production'
当DEBUG = True
时,当您使用STATICFILES_DIRS
模板标记时,Django会自动提供位于{% static 'path/to/file' %}
内任意目录中的文件。
当DEBUG = False
时,Django将不自动提供任何文件,并且您需要使用Apache,Nginx等从STATIC_ROOT
中指定的位置提供这些文件
当您运行$ manage.py collectstatic
时,Django将复制STATICFILES_DIRS
中的所有文件以及任何名为&#39; static&#39;的目录中的文件。在第三方应用中,进入STATIC_ROOT
指定的位置。
我通常构建我的项目根目录:
my_project/
/static_assets/ (specified in STATICFILES_DIRS)
/js
/images
/static (specified in STATIC_ROOT)
我希望这可以帮助您了解staticfiles应用程序的工作原理。
答案 1 :(得分:1)
STATIC_ROOT
是收集文件并在collectstatic
运行时移动到的位置。
如果您希望将文件合并到那里,可以通过static file finder找到它们。
例如,在您的设置中包含以下内容
STATICFILES_FINDERS = ("django.contrib.staticfiles.finders.FileSystemFinder",
"django.contrib.staticfiles.finders.AppDirectoriesFinder")
现在,对于属于您项目的其中一个应用,请创建一个名为static
的文件夹并在其中添加内容。
当您运行collectstatic
时,您会看到提到的文件并将其复制到STATIC_ROOT
答案 2 :(得分:1)
您可以尝试添加
STATICFILES_DIRS = (
STATIC_PATH,
)
到settings.py
。
此外,如果您还没有,请确保包含
{% load static from staticfiles %}
在您希望引用静态文件的每个模板中。
最后,请确保您引用的文件确实存在且文件路径正确。
答案 3 :(得分:-2)
尝试:
<img src="{{ STATIC_URL }}admin/img/author.jpg" alt="My image"/>
在你看来,必须是这样的:
...
from django.shortcuts import render_to_response
from django.conf import settings
def my_view(request):
...
static_url = getattr(settings, 'STATIC_URL')
...
return render_to_response(
template_name,
RequestContext(request, {
'STATIC_URL': static_url,
}))