对不起,我的问题非常基本,我想在模板页面中显示一个图像,我正在为其工作,图像没有显示我创建一个新的项目secondprjt,只有一个名为'index'的视图函数和一个名为nate test.html,并创建一个在侧面secondprjt文件夹中名为static的文件夹,并在其中创建文件夹,并在其中放置所有需要的图像
urls.py:

urlpatterns =模式('',,
# 例子:
#url(r'^$','secondprjt.views.home',name ='home'),
(r'^$','views.index'),
......... )

urlpatterns += staticfiles_urlpatterns()

Views.py来自django.shortcuts导入render_to_response
DEF索引(请求):
返回render_to_response('test.html')


test.html:
img src =“ {{static_url}} images/img03.jpg” width =“ 186” height =“ 186”

settings.py


static_root =“ c:/wamp/www/secondprjt/static”
static_url ='/static/'
staticfiles_dirs =(“ c:/wamp/www/secondprjt/static”,),)
staticfiles_finders =('django.contrib.staticfiles.finders.filesystemfinder','django.contrib.staticfiles.finders.finders.appdirectoriesfinder,

)
instasted_apps =((
-----
'django.contrib.staticfiles',
---- )

任何人都可以建议我怎么了。笔记我在用 视窗 django1.3 并使用开发服务器。预先感谢
我要求之后我得到了以下内容 http://127.0.0.1:8000/ 在浏览中
C: wamp www secondprjt> python manage.py runserver验证模型...

0错误发现了Django版本1.3,使用设置的“ secondprjt.settings”开发服务器正在运行 http://127.0.0.1:8000/使用CTRL-Break退出服务器。 [05/sep/2011 15:18:24]“ get/http/1.1” 200 89 [05/sep/sep/2011 15:18:24 “ get/images/img03.jpg http/1.1” 404 2028

有帮助吗?

解决方案

您的问题很可能是您在这两个中都使用了绝对URL STATIC_ROOTSTATICFILES_DIRS.

如果您想将绝对URL包含在每个静态DIR上(感觉就像是一个黑客,但是很好,因为您只能使用 staticfiles_urlpatterns() 在开发中),然后您可以简单地设置解决问题 STATIC_ROOT = ''.

编辑: :看起来那不是您唯一的错误。此外,如果您查看调试输出,您会注意到404的奇怪事物 - 它来自 /images/img03.jpg. 。如果你记得的话,你试图附加 {{ STATIC_URL }} 为此,应该是 /static/images/img03.jpg.

这是因为使用 render_to_response, ,您永远不会通过任何上下文(因此该模板永远无法访问 STATIC_URL - 认为它是空白的(因此为什么您没有看到 /static/ 作为图像URL的一部分。每当您想使用 任何 上下文,你 必须 将其传递到模板。在这种情况下,您应该使用 [RequestContext].

因此,您必须确保已添加 django.core.context_processors.staticTEMPLATE_CONTEXT_PROCESSORSsettings.py. 。您应该使用 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中,上下文处理器是返回上下文dict的函数。例如,在我的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.request将使您访问给定的请求,get and stost和post。参数以及来自模板的各种元数据,如果您根据get参数更改内容通常很有用)。

就您而言,您不想使用太多上下文,但是您确实想使用一点({{ STATIC_URL }}),因此您至少需要django.core.context_processors.static。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top