Медиа-файл Django не найден - PullRequest
       51

Медиа-файл Django не найден

0 голосов
/ 18 октября 2019

Медиа файл не получается. Поля, связанные с моделью пользователя, работают (например, object.username, object.email), но поле с ProfileImage не работает.

urls.py

добавлены следующие коды.

from django.conf.urls.static import static
from django.conf import settings

urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

settings.py

настроен, как показано ниже.

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

profile_detail.html

это html-код.

{%extends 'base.html'%}

{% block main %}
{{object.email}}
{{request.user}}

<img src="{{object.profileimage.image.url}}">

{% endblock %}

model.py

Эта модель связана с моделью пользователя с отношением OneToOne.

def get_profile_upload_to(instance,filename):
    new_filename = '{}.{}'.format(uuid4,filename.split('.')[-1])
    return "profile/{}/{}".format(instance.user.id, new_filename)

class ProfileImage(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE)
    image = models.ImageField(upload_to=get_profile_upload_to)
    uploaded = models.DateTimeField(auto_now_add=True)

views.py

коды, связанные с просмотром.

class ProfileDetailView(DetailView):
    model = User
    template_name = 'user/profile_detail.html'

Код ошибки на консоли

Not Found: /media/profile/1/function_uuid4_at_0x7fbf37ce42f0.jpeg
[18/Oct/2019 10:01:45] "GET /media/profile/1/function_uuid4_at_0x7fbf37ce42f0.jpeg HTTP/1.1" 404 3421

1 Ответ

0 голосов
/ 18 октября 2019

Я добавил ниже urlpatterns в apps / urls.py вместо основного urls.py, поэтому можно выводить изображение в шаблон.

urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
...