Django отображение изображения пользователя

Добрый день, У каждого пользователя есть изображение, как я могу отобразить изображение конкретного пользователя?

\\\models.py

class UserImage(models.Model):
    user = models.OneToOneField(
        settings.AUTH_USER_MODEL, default=None, null=True, on_delete=models.CASCADE)
    photo = models.ImageField(
        upload_to='images/', height_field=None, width_field=None, max_length=100)

    def __str__(self):
        return str(self.user)

\\\forms.py

class UserImageForm(forms.ModelForm):
    class Meta:
        model = UserImage

        fields = (
            'photo',
        )

\\\views.py

def photo_view(request):
    try:
        profile = request.user.userimage
    except UserImage.DoesNotExist:
        profile = UserImage(user=request.user)

    if request.method == 'POST':
        form = UserImageForm(request.POST, request.FILES, instance=profile)
        if form.is_valid():
            form.save()
            return redirect('/dashboard/user/photo')
    else:
        form = UserImageForm(instance=profile)

    return render(request, 'photo.html', {'form': form, 'profile': profile})

test.html

<img src="{{ WhatHere? }}" alt="User Profile Image" />

Так, в src="" должен быть URL-адрес изображения, которое добавил пользователь. Каждый пользователь может видеть только свое собственное изображение, не все существующие изображения должны отображаться.

Вы можете использовать

<img src="{{ profile.photo.url }}" alt="User Profile Image" />

И в вашем settings.py вы должны установить MEDIA_URL и MEDIA_ROOT AS

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

MEDIA_URL = '/media/'

И в главном urls.py

вашего проекта.
from django.conf import settings 
from django.conf.urls.static import static 


urlpatterns = [
    path('admin/', admin.site.urls),
    path('signup/', signup_view),
    path('signin/', signin_view),
    path('signout/', signout_view),
    path('dashboard/home', dashboard_home_view),
    path('dashboard/title/delete/<int:title_id>',
     title_delete, name="delete_title"),
    path('dashboard/user/profile/', profile_view),
    path('dashboard/user/photo/', photo_view),
]

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Вернуться на верх