невозможно отобразить изображения с модели usin go django - PullRequest
0 голосов
/ 18 января 2020

в settings.py

MEDIA_ROOT = os.path.join(BASE_DIR,'pictures')
MEDIA_URL = '/pictures/'

в models.py

class Campaign(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    # this is many to one relationship, on_deleting user, profile will also be deleted
    campaign_title = models.CharField(max_length=200, blank=True)
    campaign_image = models.ImageField(default="default_campaign.png",upload_to="campaign_pictures")

в views.py

def landing_page(request):
    campaigns = Campaign.objects.all().order_by('-id')
    print(campaigns)
    return render(request, 'core/landing_page.html',{'campaigns':campaigns})

на целевой странице. html

{% for campaign in campaigns %}
<img src="{{campaign.campaign_image.url}}">
{% endfor %}

выпуск

  1. если имя файла ab c xyz.jpg, оно сохраняется в / pictures / campaign_pictures как abc_xyz.jpg
  2. в html шаблоне, sr c изображения должно быть '/pictures/campaign_pictures/abc_xyz.jpg', но оно показывает только '/pictures/abc%20xyz.jpg'

Ответы [ 2 ]

1 голос
/ 19 января 2020

Я думаю, что вы пропустили в файле urls.py

from django.conf import settings
from django.conf.urls import url
from django.conf.urls.static import static
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
] + static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)

Также исправьте это с помощью

    campaign_image = models.ImageField(default="default_campaign.png",upload_to="campaign_pictures/")
0 голосов
/ 18 января 2020

Вы можете определить 'upload_to' как вызываемую функцию и использовать os.path, чтобы объединить имя каталога с URL-адресом носителя.

Ваше поле будет вызывать функцию, которая предоставит путь.

 campaign_image = models.ImageField(default="default_campaign.png",upload_to=get_campaign_path)

и определите свою функцию следующим образом:

import os
def get_campaign_path(instance, filename):
    return os.path.join('campaign_pictures/',filename)

Ссылка: https://docs.djangoproject.com/en/3.0/ref/models/fields/#django .db.models.FileField.upload_to

...