Django Media URL не возвращает строку в папку Media - PullRequest
0 голосов
/ 30 декабря 2018

Запуск django 2.0 в разработке, и я пытаюсь отобразить загруженные пользователем изображения в виде списка.

Вот строка для тега img

<img class="img-responsive" src="{{MEDIA_URL }}{{ selected_membership.image }}" alt="Subscription Logo">

Для целей тестирования {{MEDIA_URL}} {{selected_membership.image}} возвращает «my_image.jpg».Очевидно, что MEDIA_URL не работает, но вторая часть:

Urls.py

...
if settings.DEBUG:
    from django.conf.urls.static import static
    from django.contrib.staticfiles.urls import staticfiles_urlpatterns

    # Serve static and media files from development server
    urlpatterns += staticfiles_urlpatterns()
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Settings.py

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


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

{{MEDIA_URL}} Необходимо вернуть / media /

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Django не предоставляет ключевое слово MEDIA_URL для шаблонов.Он используется в моделях для подачи файлов, сохраненных через поле модели, например FileField или ImageField.Если вы уверены, что вам нужно ключевое слово MEDIA_URL в ваших шаблонах, вы можете реализовать его как контекстную переменную.Например:

class ExampleView(TemplateView):
    template_name = 'example/template.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['MEDIA_URL'] = 'your_media_url'
        return context

Если вам нужен этот URL для файла поля модели, вы можете просто написать в своем шаблоне что-то вроде:

{{ model_name.field_name.url }}
0 голосов
/ 30 декабря 2018

Модель Django (ImageField) поддерживает вызов URL для вашего изображения.Вам не нужно использовать MEDIA_URL.Просто вместо {{ selected_membership.image.url }}.

Это даст вам путь к изображению и имя.

...