Проблема с отображением картинки django

Наткнулся на странную проблему с отображением картинок, но дня начала покажу код. общие настройки:

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    BASE_DIR / 'static',
)

MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media'

основной urls

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('main.urls', namespace='main')),
    path('users/', include('users.urls', namespace='users')),
]

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Кусочек модели Barbershops

logo = models.ImageField(upload_to='users/masters_logo', null=True, blank=True,
                             default='static/img/img.png')

Картинка по умолчанию у меня храниться в media/static/img/.. Но для статических файлов я использую именно папку static, для понимания привожу картинку: введите сюда описание изображения

Мой контроллер который служит формой редактирования Barbershops

@login_required
def barbershop_profile(request):
    barbershop = Barbershops.objects.get(user=request.user)

    if request.method == "POST":
        form = BarbershopChangeForm(data=request.POST, instance=barbershop, files=request.FILES)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse('users:barbershop_profile'))
    else:
        context = {
            'form': BarbershopChangeForm(instance=barbershop)
        }

    return render(request, 'users/owner_templates/creating_barbershop_page.html', context=context)

Форма джанго:

class BarbershopChangeForm(UserChangeForm):
    class Meta:
        model = Barbershops
        fields = ('name', 'description', 'inst', 'image_background', 'logo', 'address')

Вот как выглядит фронт

<div style="color: black;">
    <form action="{% url 'users:barbershop_profile' %}" method="post" enctype="multipart/form-data">
        {% csrf_token %}
        <label for="">Назва закладу - </label>
        <p>{{ form.name }}</p>
        <label for="">Адреса - </label>
        <p>{{ form.address }}</p>
        <label for="">Опис - </label>
        <p>{{ form.description }}</p>

        <label for="">Посилання на інстаграм - </label>
        <p> {{ form.inst }}</p>

        <p>{{ form.logo }}</p>
        <img src="{{ form.logo.url }}">
        <img src="{{ form.logo }}">

        <button type="submit">Submit</button>
    </form>
</div>

и сам вывод: введите сюда описание изображения

что интересно, когда перехожу по ссылке в теге p, то изображение открывается по правильной ссылке: /media/static/img/img.png

Для модели Users, также есть подобное поле, и там работает все отлично

image = models.ImageField(upload_to='users/users_profile_pictures', null=True, blank=True,
                              default='static/img/default-avatar-profile-icon-of-social-media-user-vector.jpg')

и вот отображение пути на фронте если обернуть в тег p: введите сюда описание изображения

Если не отображается - значит что-то не так со ссылкой. Ищите ошибку. У меня тоже такое было - в views.py неполный путь сохранения. html будет в таком случае выдавать что-то типа: "файл не найден". Как пофиксить: пойдем по порядку, в общих настройках всё хорошо; в urls может быть что-то вроде

+= static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 

что-то вроде

from django.conf.urls.static import static 

может быть поможет; в моделях, формах, фронте ничего крамольного не вижу. Проверьте ещё раз все ссылки по коду и куда они ведут, наличие всех нужных библиотек. (Как ни странно но в очень редких случаях может помочь открыть в другом браузере.)

Вернуться на верх