Не отправляются изображения в форме на django

Точнее даже сказать название изображения отправляется, но ничего не меняется. У меня есть модель юзера. У юзера есть свой аватар (ImageField). Я написал форму, все вывел в шаблон. При отправке формы все сохраняется, кроме картинки. Но при изменении в админке все нормально. Почему? Если надо, вот сам сайт на pythonanywhere.com (регистрируетесь и в настройках редактирование профиля)

settings.py:

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'

models.py:

class User(AbstractBaseUser):
    GENDER = [
        ('male', 'MALE'),
        ('female', 'FEMALE'),
    ]

    username = models.CharField('username', max_length = 30, unique = True)
    email = models.EmailField('email adress', max_length = 60, unique = True)
    first_name = models.CharField('first name', max_length = 30, null = True, blank = True)
    last_name = models.CharField('last name', max_length = 30, null = True, blank = True)
    date_joined = models.DateField('date of join', auto_now_add = True)
    age = models.IntegerField('age', null = True, blank = True)
    gender = models.CharField('gender', max_length = 30, choices = GENDER, null = True, blank = True)
    image = models.ImageField(upload_to = 'account/avatars/%y/%m/%d', null = True, blank = True)
    is_staff = models.BooleanField(default = False)
    is_admin = models.BooleanField(default = False)
    is_superuser = models.BooleanField(default = False)
    is_active = models.BooleanField(default = True)

    objects = UserManager()

    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = ['email']

    def __str__(self):
        return self.username

    def has_perm(self, perm, obj = None):
        return self.is_admin

    def has_module_perms(self, app_label):
        return True

forms.py:

class UserUpdateForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ['username', 'email', 'first_name', 'last_name', 'age', 'gender', 'image']

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        #for field in self.fields:
            #self.fields[field].widget.attrs['autocomplete'] = 'off'
        self.fields['first_name'].widget.attrs['placeholder'] = 'Your first name'
        self.fields['last_name'].widget.attrs['placeholder'] = 'Your last name'
        self.fields['age'].widget.attrs['placeholder'] = 'Your age'
        self.fields['username'].widget.attrs['placeholder'] = 'Your username'
        self.fields['email'].widget.attrs['placeholder'] = 'Your email'
        self.fields['image'].widget.attrs['enctype'] = 'multipart/form-data'

views.py:

class SettingsView(MessagesMixin, View):
    def get(self, request):
        context = {
            'form': UserUpdateForm(instance = request.user), 
        }
        return render(request, 'account/update.html', context)

    def post(self, request):
        right_username = request.user.username
        right_email = request.user.email
        form = UserUpdateForm(request.POST, instance = request.user)
        if form.is_valid():
            form.save()
            self.set_success_msg('Profile was successfule updated')
        else:
            username = request.POST.get('username')
            email = request.POST.get('email')
            form = UserUpdateForm(instance = request.user)
            for user in User.objects.all():
                if username == user.username and user.email != right_email:
                    self.set_error_msg('This username is already taken')
                if email == user.email and user.username != right_username:
                    print(user, ' - ', user.email)
                    print(right_username)
                    self.set_error_msg('This email is alreade taken')
        return redirect(reverse('account:settings'))

html:

<form method="post" class="user-update-form">
        {% csrf_token %}
        {% for field in form %}
            {{field.label_tag}}
            {{field}}
        {% endfor %}
        <input type="submit" value="Save">
    </form>

Ответы (1 шт):

Автор решения: unknown
  1. Добавьте в шаблон enctype="multipart/form-data"
<form method="post" class="user-update-form" enctype="multipart/form-data">
  1. При обработке формы нужно также передавать request.FILES
form = UserUpdateForm(request.POST, request.FILES, instance = request.user)
→ Ссылка