Как вы наверняка догадались, я начинающий джанго-программист. Прочитал книгу Django подробное руководство. Выполнил тутор с сайта. Теперь пытаюсь сделать простенький собственный проект в качестве обучения.
Возникают вопросы, ответы на которые найти “легко” не получается. Проясните пожалуйста, если вас не затруднит.
Первые вопросы по форме создания пользователя UserCreationForm. Если экземпляр этого класса вывести в шаблон сразу, то шаблон отобразит три поля, ник и два пароля. Если же этот класс переопределить так (именно так в три строчки):
class UserCreateForm(UserCreationForm): class Meta: model = User
Вопрос 1: чем принципиально отличается в этом случае класс наследник от родителя, что так по разному отражается в шаблоне?
Основной локальной целью является система логирования по email. Я согласно примерам из этих наших интернетов дописываю наследника так и это работает как ожидалось:
class UserCreateForm(UserCreationForm): email = forms.EmailField(required = True, error_messages = {'invalid': 'Введите корректный адрес электронной почты'}) class Meta: model = User fields = ( "username", "email") def save(self, commit = True): user = super(UserCreationForm, self).save(commit = False) user.email = self.cleaned_data["email"] if commit: user.save() return user
Вопрос 2 Зачем тут нужна перегрузка save? Без этой перегрузки форма так же “хорошо” на взляд новичка создает пользователя, проверяя данные поля email.
Вопрос 3 Почему если убрать параметр error_messages = {'invalid': ‘Введите корректный адрес электронной почты’} , некореектно введенное поле email приводит к сообщению “Введите правильное имя”? из за этого пришлось явно указать строку для ключа invalid
Заранее спасибо за пояснения, а то я неуютно себя чувствую не очень понимая что происходит, не смотря на то, что все работает как ожидается.