Как получить username из формы Django?
Есть некая онлайн игра, которая для авторизации требует, чтобы пароль был хеширован в MD5 в порядке username + password. Как получить username из формы для использования его в хешировании?
forms.py
from django import forms
from .models import AdvUser
from django.contrib.auth import password_validation
from django.core.exceptions import ValidationError
from captcha.fields import CaptchaField
from .models import user_registrated
class RegisterUserForm(forms.ModelForm):
email = forms.EmailField(required=True, label='Адрес электронной почты')
password1 = forms.CharField(label='Пароль', widget=forms.PasswordInput, help_text=password_validation.password_validators_help_text_html())
password2 = forms.CharField(label='Пароль (повторно)', widget=forms.PasswordInput, help_text='Введите тот же самый пароль еще раз для проверки')
captcha = CaptchaField()
# Валидация пароля
def clean_password(self):
password1 = self.cleaned_data['password1']
if password1:
password_validation.validate_password(password1)
return password1
# Проверка на совпадение паролей, после валидации
def clean(self):
super().clean()
password1 = self.cleaned_data['password1']
password2 = self.cleaned_data['password2']
if password1 and password2 and password1 != password2:
errors = {'password2': ValidationError ('Введенные пароли не совпадают', code='password_mismatch')}
raise ValidationError(errors)
def save(self, commit=True):
user = super().save(commit=False)
user.set_password(self.cleaned_data['password1'])
user.is_active = False
user.is_activated = False
if commit:
user.save()
user_registrated.send(RegisterUserForm, instance=user)
return user
class Meta:
model = AdvUser
fields = ('username', 'email', 'password1', 'password2', 'first_name', 'last_name',)
Ответы (1 шт):
Автор решения: m0nte-cr1st0
→ Ссылка
def save(self, commit=True):
user = super().save(commit=False)
username = self.cleaned_data.get('username')
...