Как я могу показать фотографию mi профиля?

Фотография загружается и сохраняется в базе данных, но я не могу показать ее в шаблоне. Что я могу сделать? Где проблема? Какова будет логика?

Настройки:

STATIC_URL = '/static/'
STATICFILES_DIRS = [STATIC_DIR]
MEDIA_URL = '/media/'

Урлы:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('business_app.urls')),

]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Просмотров:

def change_profile_picture(request):
    if request.user.is_authenticated:
        if request.method == "POST":
            profile_picture = request.FILES['profile_picture'] if 'profile_picture' in request.FILES else None

            user = get_object_or_404(User, pk=request.user.pk)
            if request.user.pk != user.pk:
                return redirect("/")

            Profile_picture.objects.create(
                Profile_picture = profile_picture,
                USer = request.user,
                )        

            return redirect("/")
    return render(request,'0_index.html')

Модели:

class Profile_picture(models.Model):
    USer = models.ForeignKey(User,default=None,on_delete=models.CASCADE, related_name="user_propic")
    Profile_picture = models.ImageField(upload_to="3_profile_picture/",default='3_profile_picture/avatar.png', null=True, blank=True)

templates:

<img src="static/1_images/3_about.jpg" alt="" width="100"
                                        class="img-fluid rounded-circle mb-3 img-thumbnail shadow-sm">

Вы можете попробовать в вашем settins.py

 import os

    STATIC_URL = '/static/'
    
    STATICFILES_DIRS=[
        BASE_DIR / "static"
    ]
    
    MEDIA_URL="/media/"
    MEDIA_ROOT=os.path.join(BASE_DIR,"media/")  

в вашем шаблоне

<img src="{% static '1_images/3_about.jpg' %}" alt="" width="100"
                                        class="img-fluid rounded-circle mb-3 img-thumbnail shadow-sm">

Сначала вы должны передать ваш объект Profile_picture в ваш шаблон следующим образом, при этом new_pf будет экземпляром этого объекта:

views.py

return render(request,'your_html_page.html', {'pf': new_pf})

Затем в вашем шаблоне your_html_page.html:

<img src="{{ pf.Profile_picture.url }}">

В вашем шаблоне вы обращаетесь к экземпляру Profile_picture с помощью pf, затем обращаетесь к атрибуту Profile_picture, затем к атрибуту built-in url, чтобы получить url, который браузер отобразит как картинку.

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