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

Джанго имеет встроенную форму UserCreatioonForm для создания пользователей. В ней есть такие поля, как имя и фамилия, электронная почта и т.д. Но можно ли сделать поле для загрузки изображений, которые будут использоваться как фотографии профиля пользователя?

Я пытался прочитать о дополнительных полях ввода на сайте djangoproject.com/docs, но это было довольно загадочно.

Нет, в Django нет поля для фотографий профиля. Вы создадите модель, которая будет иметь отношение один к одному с моделью User, и тогда вы сможете использовать изображение, сохраненное в этой модели.

models.py

from django.contrib.auth.models import User 
class Profile(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    avatar = models.ImageField(upload_to='profile_pics', null=True, 
             blank=True)
    def __str__(self):
        return self.user.username

views.py -> загрузка и обновление профиля

from .models import Profile
from django.shortcuts import render, get_object_or_404
def upload_avatar(request):
    profile = get_object_or_404(Profile, user=request.user)
    if request.method == 'POST':
        profile.avatar = request.FILES.get('avatar')
        profile.save()
    return redirect(request.META.get('HTTP_REFERER'))

profile.html

{% if request.user.profile.avatar %} 
<img  src="{{ request.user.profile.avatar.url }}" alt=" avatar-picture">
{% endif %}


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