Django 1.6:无法在模板中显示模型中的图片。

时间:2014-06-09 14:30:03

标签: python django image templates

我正在尝试从模型中显示图片,但它没有显示任何内容。我使用管理面板上传了图像,我可以在uploads文件夹中看到图片。但是当我尝试在模板中显示它时,它没有显示任何内容。我没有任何与之相关的设置文件,例如媒体根,媒体网址,因为我不确定要为他们添加什么

这是我试图展示的模板

 <img src="{% url 'getDocProfilePicture' doctor.id %}">

这是models.py

class Doctor(models.Model):
    name = models.CharField(max_length=30)
    specialization = models.ForeignKey(Specialization)
    clinic = models.ForeignKey(Clinic)
    seekers = models.ManyToManyField(DoctorSeeker, through='Review')
    language = models.ManyToManyField(Language)
    education1 = models.CharField(max_length=100)
    education2 = models.CharField(max_length=100, null = True)
    gender_choices = ( ('M', 'Male'), ('F','Female'),)
    gender = models.CharField(max_length=5, choices = gender_choices, null=True)
    profile_pic = models.ImageField(upload_to='uploads/', null=True)
    statement = models.TextField(null=True)
    affiliation = models.CharField(max_length=100, null = True)

这里是views.py

def getDocProfilePicture(request, id):
    d = Doctor.objects.get(id=doctor_id)
    return HttpResponse(d.profile_pic.read())

Urls.py

url(r'^getDocProfileicture/ (?P<id>\d+)/$', views.getDocProfilePicture, name='getDocProfilePicture'),

3 个答案:

答案 0 :(得分:0)

您不需要在此处使用url模板标记,并且具有特殊的单独视图。

ImageField获取url

<img src="{{ MEDIA_URL }}/{{ doctor.profile_pic.url }} ">

答案 1 :(得分:0)

显示图像不需要这么复杂的逻辑。

{{ doctor.profile_pic.url }}

答案 2 :(得分:0)

我知道这个问题已经过时了,但我遇到了同样的问题,这在我的案例中解决了:

settings.py

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
PROJECT_DIR  = os.path.dirname(__file__)

MEDIA_ROOT = os.path.join(PROJECT_DIR, "media")

MEDIA_URL = '/media/'

urls.py

然后,我的urls.py缺少这行代码来发现/ media /文件夹并显示内容:

urlpatterns += staticfiles_urlpatterns()

urlpatterns = patterns('',
    url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}, name="media_url"),
) + urlpatterns

希望它可以帮助别人。