django imagefield中图像的相对url映射

时间:2011-06-10 17:47:02

标签: django django-templates django-urls django-models

我正在使用imagefield来渲染图像。这些是网址;

    (r'^site_media/(?P<path>.*)$', 'django.views.static.serve',
    {'document_root': site_media}),
    (r'^$', 'webapp.blog.views.index'),
    url(
        r'^blog/view/(?P<slug>[^\.]+).html', 
        'webapp.blog.views.view_post', 
        name='view_blog_post'),

以下是观点:

def index(request):
    return render_to_response('index.html', {
        'categories': Category.objects.all(),
        'posts': Blog.objects.all()[:5]
    })

def view_post(request, slug):   
    return render_to_response('view_post.html', {
        'post': get_object_or_404(Blog, slug=slug),
    })

如果我使用{{ posts.photos.url }}在索引页面中调用图像对象,则会正确映射到http://127.0.0.1/site_media/images/image.jpg。但是如果我在view_post模板上调用图像对象,它将被映射到http://127.0.0.1/blog/view/site_media/images/image.jpg。如何将view_post功能地图图片网址设置为正确的http://127.0.0.1/site_media/images/image.jpg网址。

1 个答案:

答案 0 :(得分:3)

这不是您的urlconf的功能,而是您在模板中显示图像的方式。你可能正在做这样的事情:

<img src="site_media/images/image.jpg">

你应该做什么

<img src="/site_media/images/image.jpg">

...注意最初的斜线。或者,如果您正在使用STATIC_URL或MEDIA_URL,请确保使用settings.py中的初始斜杠定义它们。