【问题标题】:Django - Display ImageFieldDjango - 显示图像字段
【发布时间】:2013-07-24 15:41:27
【问题描述】:

我刚开始使用 django,我还没有找到很多关于如何显示 imageField 的信息,所以我做了这个:

模型.py

class Car(models.Model):
    name = models.CharField(max_length=255)
    price = models.DecimalField(max_digits=5, decimal_places=2)
    photo = models.ImageField(upload_to='site_media')

views.py

def image(request):
    carx = Car()
    variables = RequestContext(request,{
        'carx':carx
    })
    return render_to_response('image.html',variables)

image.html

{% extends "base.html" %}
{% block content %}
   <img src=carx />
{% endblock %}

我已经从终端保存了一张图片,我知道它在那里,如果在 image.html 中执行此操作:

{% block content %}
    {{ carx }}
{% endblock %}

输出是:汽车对象

谁能告诉我我的错误在哪里?

非常感谢。

【问题讨论】:

    标签: python django imagefield


    【解决方案1】:

    您还可以在 Settings.py 中使用静态 URL。在应用程序的静态目录中创建一个目录,例如“Uploads”。还要在 models.py 中的模型中更改此设置。

    使用以下代码:

    <img src="{% static carx.photo.url %}" />
    

    【讨论】:

    • 虽然这样可行,但您不应该将用户文件上传到 /static,而是上传到 /media 文件夹。
    【解决方案2】:

    谢谢大家,我就这样修好了。

    views.py

    def image(request):
    carx = Car.objects.all()
    for mycar in carx:
        MyCar = mycar.photo.url
    variables = RequestContext(request,{
        'carx':MyCar
    })
    return render_to_response('image.html',variables)
    

    image.html

    {% extends "base.html" %}
    
    {% block content %}
         <img src="{{ MEDIA_URL }}{{ carx }}"/>
    {% endblock %}
    

    settings.py

     MEDIA_URL = '/Users/gcarranza/PycharmProjects/django_bookmarks/'
     STATIC_URL = '/Users/gcarranza/PycharmProjects/django_bookmarks/site_media/'
     STATICFILES_DIRS = (
     '/Users/gcarranza/PycharmProjects/django_bookmarks/site_media',)
    

    现在我知道 carx.photo.url 检索文件的绝对路径,唯一的问题是加载为静态文件。

    【讨论】:

    • @unizeO 请更新您的答案我已经做过但图像不起作用
    • 这比实际需要的要复杂。
    【解决方案3】:

    ImageField 包含 url 属性,您可以在模板中使用它来呈现正确的 HTML。

    {% block content %}
        <img src="{{ carx.photo.url }}">
    {% endblock %}
    

    【讨论】:

    • 假设有一个服务器配置为提供来自site_media 的内容,无论如何。
    • 我在 settings.py STATIC_URL ='/Users/gcarranza/PycharmProjects/django_bookmarks/site_media/' STATICFILES_DIRS = ('/Users/gcarranza/PycharmProjects/django_bookmarks/site_media', )中有这个
    • 更多的是配置实际 Web 服务器的问题 - docs.djangoproject.com/en/dev/howto/static-files/… 展示了如何在开发中从 Django 为它们提供服务,但这在生产环境中不是一个好主意。
    • 不确定这是否是版本问题,但这种在 'src' 中单独提供变量的方法似乎不起作用。
    猜你喜欢
    • 2015-11-16
    • 2018-10-22
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多