簡體   English   中英

Django 1.6:無法顯示模板中模型的圖片。

[英]Django 1.6: Can't display a picture from a model in template.

我正在嘗試顯示模型中的圖片,但未顯示任何內容。 我使用管理面板上傳了圖片,並且可以在uploads文件夾中看到圖片。 但是,當我嘗試在模板中顯示它時,它什么也沒顯示。 我沒有任何與之相關的設置文件,例如媒體根目錄,媒體URL,因為我不確定要為它們放什么

這是我要顯示的模板

 <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'),

您無需在此處使用url模板標記,並具有一個特殊的單獨視圖。

只需從ImageField獲取url

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

您不需要如此復雜的邏輯來顯示圖像。

{{ doctor.profile_pic.url }}

我知道這個問題很舊,但是我遇到了同樣的問題,在我的情況下這個問題得以解決:

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

希望它可以幫助某人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM