【问题标题】:Display an image located in the database in Django在 Django 中显示位于数据库中的图像
【发布时间】:2013-01-18 12:04:32
【问题描述】:

我只想通过网页上的 html 图像标签显示我通过管理模块上传的图像。 图片位于/home/user/work/djcode/media/chicks/blondie.jpg。

这是我的models.py的相关部分

class Image(models.Model):
    model_name = models.CharField(max_length=50)
    model_pic = models.ImageField(upload_to='chicks/')
def __unicode__(self):
    return self.model_name

这是我的views.py的相关部分

def main(request):
    i = get_object_or_404(Image, pk=1)
    return render_to_response('polls/main.html', {'image': i}, context_instance=RequestContext(request))

我使用的html标签很简单

<img src="{{ MEDIA_ROOT }}/{{ image.model_pic.url }}">

在 settings.py 中,我的媒体根目录是 MEDIA_ROOT = '/home/user/work/djcode/media'

请注意,变量 {{ image.model_pic.url }} 通过 html 模板显示“chicks/blondie.jpg”,所以我认为我的图像对象确实很好地发送到了模板。

任何人都可以帮我解决这个问题吗?那真的很有帮助。

非常感谢您的宝贵时间!

【问题讨论】:

    标签: python html database django image


    【解决方案1】:

    您对模板中图像字段的 url 函数的使用不太正确 - {{ image.model_pic.url }} 应该可以解决问题。您只需删除{{ MEDIA_URL }} 位。

    你的 html 应该是 -

    <img src="{{ image.model_pic.url }}">
    

    查看using files in models 上的文档。

    如果您仍然遇到问题,则可能是 serving static files. 的问题。在 django 中提供静态文件取决于您是在生产环境中还是仅使用 python manage.py runserver 命令。

    要在开发过程中服务器媒体文件(使用 python manage.py runserver),请确保您的 settings.py 中的 MEDIA_URL 和 MEDIA_ROOT 正确,然后您可以将以下内容附加到您的 url conf -

    from django.conf import settings
    from django.conf.urls.static import static
    
    urlpatterns = patterns('',
        # ... the rest of your URLconf goes here ...
    ) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    

    查看docs,了解如何在生产环境中提供文件的说明。

    【讨论】:

      【解决方案2】:

      您需要使用 {{MEDIA_URL}}{{STATIC_URL}} ,选择取决于您如何管理服务器上的文件。如果你使用{{STATIC_URL}} 这是最好的。

      【讨论】:

        【解决方案3】:

        尝试执行以下操作:

        from django.conf import settings
        from django.conf.urls.static import static
        from . import views
        
        urlpatterns = [
                    .....
        ] + static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-10
          • 2013-08-21
          • 1970-01-01
          相关资源
          最近更新 更多