urlpatterns = patterns('',
#例子:
#url(r'^ $','SecondPrjt.views.home',name ='home'),
(R '^ $', 'views.index'),
.........
)
urlpatterns + = staticfiles_urlpatterns()
views.py 的
来自django.shortcuts导入render_to_response
def index(request):
return render_to_response('test.html')
的test.html:
img src =“{{STATIC_URL}} images / img03.jpg”width =“186”height =“186”
STATIC_ROOT =“C:/ wamp / www / SecondPrjt / static”
STATIC_URL ='/ static /'
STATICFILES_DIRS =(
“C:/ WAMP / WWW / SecondPrjt /静”,
)
STATICFILES_FINDERS =(
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
INSTALLED_APPS =(
-----
'django.contrib.staticfiles',
----
)
任何人都可以提出我的错误。注意我正在使用 windows 和 django1.3 并使用开发服务器。提前谢谢
我在浏览中请求http://127.0.0.1:8000/后得到以下内容
c:\ wamp \ www \ SecondPrjt> python manage.py runserver
验证模型......
答案 0 :(得分:2)
您的问题很可能是您在STATIC_ROOT
和STATICFILES_DIRS
使用了绝对网址。
如果你想在每个静态目录中包含绝对URL(感觉就像一个黑客,但它很好,因为你应该只在开发中使用staticfiles_urlpatterns()
),那么你可以通过简单的设置解决问题STATIC_ROOT = ''
。
修改:看起来这不是您唯一的错误。另外,如果你看看你的调试输出,你会注意到404的一些奇怪的东西 - 它来自/images/img03.jpg
。如果您还记得,那么您尝试将{{ STATIC_URL }}
附加到该/static/images/img03.jpg
,因此它应该是render_to_response
。
这是因为在使用STATIC_URL
时,您永远不会传递任何上下文(因此模板永远无法访问/static/
- 它认为它是空白的(因此您没有看到{{1}作为图片网址的一部分。每当你想使用 ANY 上下文时,必须将它传递给模板。在这种情况下,你应该使用{{3} }。
因此,您必须确保已在 settings.py 中将django.core.context_processors.static
添加到TEMPLATE_CONTEXT_PROCESSORS
。您应该使用render_to_response
,如下所示:
def index(request):
return render_to_response('test.html', context_instance=RequestContext(request))
以下是对上下文处理器的解释:
在 settings.py 中,您可以使用以下内容:
TEMPLATE_CONTEXT_PROCESSORS = (
'constant_context_processor.constants',
'django.core.context_processors.static',
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.core.context_processors.request', )
这里的重要部分是django.core.context_processors.static
。在Django中,上下文处理器是一个返回上下文字典的函数。例如,在我的Django项目中,我经常使用以下代码片段:
constant_context_processor.py :
import settings
def constants(request):
return {
'CONSTANTS': settings.CONSTANTS,
}
(您将在 settings.py 中注意到,我使用constant_context_processor.constants
作为上下文处理器之一)。这允许我在 settings.py 中定义常量并在我的模板中使用它们,例如类似{{ CONSTANTS.favicon_url }}
。
正如您所看到的,上下文处理器和使用RequestContext
的优势在于您自动添加模板中通常需要的上下文,因此您无需在每个视图中手动填充上下文的字典。 Django知道您通常希望在模板中访问某些变量,因此它们可以通过其上下文处理器访问它们(因此,例如,django.core.context_processors.request将允许您访问给定的请求,其GET和POST参数以及模板中的所有元数据,如果您根据GET参数改变内容,这通常很有用。)
在你的情况下,你不想使用太多的上下文,但你确实想要使用一点({{ STATIC_URL }}
),所以你至少需要django.core.context_processors.static。