簡體   English   中英

Django用媒體目錄顯示ImageField

[英]Django Display ImageField With Media Dir

我正在使用Django 1.9.3。 我正在嘗試顯示某個用戶上傳的媒體文件(例如imageFields)。

HTML頁面:

    {% for project in projects %}
        <img src="{{ project.image.url }}" class="img-responsive" alt="">
    {% endfor %}

Views.py:

def home(request):
    projects = AvailableProject.objects.all().order_by('-published_date')

    return render(request, 'accounts/home.html', {'projects': projects})

urls.py:

urlpatterns = [
...
] 
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

settings.py:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

STATICFILES_DIRS = (
    ('global', os.path.join(BASE_DIR, 'smilesite', 'project_static')),
    ('admins', os.path.join(BASE_DIR, 'admins', 'static')),
    ('accounts', os.path.join(BASE_DIR, 'accounts', 'static')),
    ('mysite', os.path.join(BASE_DIR, 'mysite', 'static')),
    ('media', os.path.join(BASE_DIR, 'media')),
)
# print(STATICFILES_DIRS)
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
)

# Define place to save media (e.g. pictures for all the projects)
PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))
MEDIA_ROOT = os.path.join(PROJECT_PATH, 'media')
MEDIA_URL = '/media/'

models.py:

from django.db import models
from django.conf import settings

# Create your models here.
class AvailableProject(models.Model):
    image = models.ImageField(upload_to=settings.MEDIA_ROOT) 

我確實在流程頁面上遍歷了每個堆棧,並嘗試了以下解決方案,但仍然無法正常工作...:

<img src="{% static 'media/{{project.image.title}}.jpg' %}" class="img-responsive" alt="">
<img src="{{ project.image.url }}" class="img-responsive" alt="">

我不知道為什么project.image.url沒有正確顯示相應的圖像。

原因正是喬尼·貝肯斯坦所說的。

我更改了這一行,一切正常:

image = models.ImageField(upload_to='uploads/')

那么{{project.image.url}}是正確的URL。

暫無
暫無

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

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