Я пытаюсь отобразить медиафайл (изображение) на шаблоне DetailView.Django - Обслуживание загруженных пользователем медиафайлов
Я запускал операторы печати, чтобы проверить, где указываются MEDIA_ROOT и MEDIAFILES_DIRS, и оба они правильно указывают/project/static/media.
Поэтому я пытаюсь вызвать его на странице html с помощью <img src="{{ object.profile_pic.url }}" />
, но он не отображается.
Я проверяю консоль и ищет файл в XXX.X.X.X: 8000/media/image_file.jpg.
Это как-то связано с настройкой MEDIA FILES в settings.py?
Это как моя структура папок выглядит
/project
/project
/project
urls.py (base)
/apps
/app1
urls.py
manage.py
/static
/media
image_file.jpg
settings.py
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.9/howto/static-files/
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(os.path.dirname(BASE_DIR), "static", "static_files"),
]
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static", "static_root")
"""
MEDIA FILES
"""
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static", "media")
MEDIAFILES_DIRS = [
os.path.join(os.path.dirname(BASE_DIR), "static", "media"),
]
"""
Override the BaseUser model
"""
AUTH_USER_MODEL = 'accounts.User'
urls.py // нужно добавить + статический (settings.MEDIA_URL, document_root = settings.MEDIA_ROOT) на базовый urls.py, а не на уровне приложения
from django.conf.urls import include, url
from django.contrib import admin
from . import views
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
url(r'^$', views.HomepageTemplateView.as_view(), name='home'),
url(r'^how-it-works/$', views.HowItWorksTemplateView.as_view(), name='how-it-works'),
url(r'^categories/', include('apps.categories.urls')),
url(r'^tasks/', include('apps.tasks.urls')),
url(r'^accounts/', include('apps.accounts.urls')),
url(r'^admin/', admin.site.urls),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
detailview.html
{% extends 'base.html' %}
{% block navbar %}
<div class="row">
<div class="container">
{% include 'navbar.html' %}
</div>
</div>
{% endblock %}
{% block content %}
<div class="row">
<div class="container">
<div class="col-md-12">
{% load staticfiles %}
<p><img src="{{ object.profile_pic.url }}" /></p>
<p>{{ object.username }}</p>
<p>{{ object.first_name }} {{ object.last_name }}</p>
<p>{{ object.email }}</p>
<p>{{ object.contractorprofile.subcategory }}</p>
</div>
</div>
</div>
{% endblock %}
Каков путь к файлу 'urls.py'? Это принадлежит одному из ваших приложений или это уровень проекта, базовый urls.py? – JCotton
это уровень приложения. поэтому его в /accounts/urls.py. вы говорите, где код urls.py, который я вставил, исходит справа? – Chris
думал так. Не могли бы вы отредактировать вопрос и добавить соответствующую часть базы 'urls.py', а также обновить структуру папок с обоих мест urls.py? – JCotton