Я не могу отобразить изображение на странице администратора Django
У меня проблемы с отображением изображений на странице администратора Djnago.
я прочитал https://stackoverflow.com/questions/2443752/how-to-display-uploaded-images-in-change-list-page-in-django-admin/51181825#51181825
эту статью, но так и не получил то, что хотел :(
это мои коды
models.py
from django.contrib.auth.models import (
BaseUserManager, AbstractBaseUser, PermissionsMixin
)
from django.db import models
from django.utils.html import mark_safe
class User(AbstractBaseUser, PermissionsMixin):
image = models.ImageField(
upload_to='media/profile_image/',
null=True
)
admin.py
class UserAdmin(BaseUserAdmin):
# The forms to add and change user instances
form = UserChangeForm
add_form = UserCreationForm
def image_tag(self, obj): # Here
return format_html(
f'''<a href="{obj.image.url}" target="_blank">
<img
src="{obj.image.url}" alt="{obj.image}"
width="50" height="50"
style="object-fit: cover;"
/>
</a>''')
list_display = ('uid','get_full_name', 'email', 'nickname', 'introduce','image', 'birth','is_active', 'is_superuser', 'date_joined', 'image_tag')
...
вот что я получил
изображение находится в моем PROJECTNAME/media/profile_image, но я не могу отобразить его на моей странице администратора :(
)Проблема может быть связана с настройками вашего проекта или с тем, как вы определяете отображение изображений в вашем файле admin.py.
Пожалуйста, проверьте следующее:
Убедитесь, что в файле settings.py правильно установлены MEDIA_URL и MEDIA_ROOT.
.Проверьте, что файл изображения читается сервером, перейдя к URL-адресу изображения в браузере.
Если вы используете ведро S3 для хранения изображений, проверьте, что ведро настроено правильно и что пользователь IAM имеет правильные разрешения.
В методе image_tag вы используете obj.image, который является экземпляром
.ImageField, вам следует использовать obj.image.url
.Также проверьте метод image_tag. Функция format_html используется для вывода безопасного HTML, поэтому строка f'' является ненужной и может быть удалена.
Наконец, убедитесь, что метод image_tag передается в качестве атрибута кортежу list_display в классе UserAdmin.
Хотя, если вы предоставите дополнительный код из настроек и дополнительные детали или журналы ошибок. Возможно, мы сможем помочь вам с конкретным решением.
Я решил проблему, добавив
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
это в моем urls.py
Простите за вопрос, который я мог бы решить сам, но я оставлю это для тех, у кого может быть такая же проблема... спасибо