【发布时间】:2012-04-15 03:16:10
【问题描述】:
Django 建议我,如果我打算只使用一台服务器 (Apache) 来同时提供动态和静态文件,那么 I should serve static files using django.contrib.staticfiles。
所以在我的settings.py 中,我已将django.contrib.staticfiles 加载到我的INSTALLED_APPS 和django.core.context_processors.static 到我的TEMPLATE_CONTEXT_PROCESSORS。
我在管理模板中注意到它链接到这样的静态文件(来自index.html):
{% load i18n admin_static %}
{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/dashboard.css" %}" />{% endblock %}
但是看看模板标签admin_static,它只是static的一个包装器:
from django.conf import settings
from django.template import Library
register = Library()
if 'django.contrib.staticfiles' in settings.INSTALLED_APPS:
from django.contrib.staticfiles.templatetags.staticfiles import static
else:
from django.templatetags.static import static
static = register.simple_tag(static)
所以我得出的结论是,因为每个管理静态文件都使用 admin/... 前缀作为服务器,那么(就我而言)完整路径应该是
/usr/lib64/python2.7/site-packages/django/contrib/admin/static
所以我在settings.py 中将路径设置为我的STATICFILES_DIRS,但Apache 仍然不会提供任何静态文件(在重新启动服务器之后)。我的逻辑哪里出错了?
【问题讨论】:
标签: python django apache django-templates django-staticfiles