35
self.fields['password'].help_text = 'Придумайте пароль'
self.fields['password_check'].label = 'Повторите пароль'
self.fields['first_name'].label = 'Имя'
self.fields['last_name'].label = 'Фамилия'
self.fields['email'].label = 'Почта'
self.fields['email'].help_text = 'Пожалуйста, укажите реальный адресс'
def clean(self):
username = self.cleaned_data['username']
password = self.cleaned_data['password']
password_check = self.cleaned_data['password_check']
email = self.cleaned_data['email']
if User.objects.filter(username=username).exists():
raise forms.ValidationError("Пользователь с данным логином уже
зарегистрирован!")
if password != password_check:
raise forms.ValidationError("Ваши пароли не совпадают!")
if User.objects.filter(email=email).exists():
raise forms.ValidationError("Пользователь с данным email зарегистрирован.")
Указанный класс наследуется от forms.ModelForm и создаёт форму
регистрации пользователя, в которой необходимо указать логин, пароль, имя
и фамилию, адрес электронной почты. Он соответствует таблице auth_user.
Так же у этого класса есть два метода. В def __init__ переопределяется метод
инициализации класса таким образом, чтобы при заполнении формы, поля
были подписаны и заполнялись в соответствии с нашими потребностями. Все
остальные таблицы создаются автоматически при помощи библиотеки ORM,
используемой Django[27].
Теперь рассмотрим модели, используемы для создания таблиц,
изображенных на второй части диаграммы.
Для создания таблиц ecomapp_brand и ecomapp_category используется
следующий код:
class Category(models.Model):
name = models.CharField(max_length=100)
slug = models.SlugField()
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('category_detail', kwargs={'category_slug': self.slug})
Поле slug обозначает короткую ссылку на объект класса, в английском
транслите с заменой пробелов дефисами.