Я использую Джанго и Аллаута.Мне нужно, чтобы пользователь мог загружать фотографии при регистрации.В данный момент форма работает, но выбранное фото не загружается
Models.py:
class Profile(AbstractUser):
bdate = models.DateField( blank=True, null=True, default="1990-01-01")
photo = models.ImageField(upload_to='accounts/', blank=True, null=True, default="" )
phone = models.CharField(max_length=128, blank=True, null=True, default="" )
def __str__(self):
return "%s, %s" % (self.username, self.first_name)
class Meta:
verbose_name = 'Пользователя'
verbose_name_plural = 'Пользователи'
Adapter.py
class AccountAdapter(DefaultAccountAdapter):
def save_user(self, request, user, form, commit=False):
data = form.cleaned_data
user.username = data.get('username')
user.email = data['email']
user.first_name = data['first_name']
user.last_name = data['last_name']
user.bdate = data['bdate']
user.photo = data['photo']
user.phone = data['phone']
if 'password1' in data:
user.set_password(data['password1'])
else:
user.set_unusable_password()
self.populate_username(request, user)
if commit:
user.save()
return user
Forms.py
class SignupForm (forms.Form):
email = forms.EmailField(widget=forms.TextInput(
attrs={"class": "input_text", }), required=True,)
username = forms.CharField(max_length=20, widget=forms.TextInput(
attrs={"class": "input_text", }), required=True,)
password1 = SetPasswordField()
password2 = PasswordField()
first_name = forms.CharField(max_length=20, widget=forms.TextInput(
attrs={"class": "input_text", }), required=True,)
last_name = forms.CharField(max_length=30, widget=forms.TextInput(
attrs={"class": "input_text", }), required=True,)
bdate = forms.DateField( widget=forms.TextInput(
attrs={"id": "date", "type": "date" }), required=True, )
phone = forms.CharField(max_length=30, widget=forms.TextInput(
attrs={"class": "input_text", }) , required=True,)
photo = forms.ImageField(required=False,)
class Meta:
model = Profile
exclude = [" "]
def signup(self, request, user):
user.username = self.cleaned_data['username']
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.bdate = self.cleaned_data['bdate']
user.photo = self.cleaned_data['photo']
user.phone = self.cleaned_data['phone']
user.save()
Я, конечно, указал ACCOUNT_SIGNUP_FORM_CLASS в settings.py, чтобы указать на эту форму, и она отображает поля, которые я в нее вставил.В установленных мной настройках:
AUTH_USER_MODEL = 'lk.Profile'
ACCOUNT_SIGNUP_FORM_CLASS = 'cabin.forms.SignupForm'
ACCOUNT_ADAPTER = 'lk.adapter.AccountAdapter'
Как получить изображение для загрузки на сервер при регистрации пользователя?