Настройка UserCreationForm для адреса электронной почты в качестве имени пользователя в Django 1.2 - PullRequest
4 голосов
/ 23 июля 2010

Django 1.2 добавляет новые допустимые символы в имена пользователей, что означает, что имена пользователей могут быть просто адресами электронной почты.До сих пор я использовал встроенный UserCreationForm для регистрации - как я могу изменить его, чтобы пометить поле «username» поле «email»?И как также добавить дополнительные (но все же пользовательские объекты) поля, такие как имена и фамилии?(И как сделать их необязательными?)

Должен ли я в такой степени изменять форму UserCreationForm или мне лучше начать с нуля (и если последнее, как?)*

1 Ответ

2 голосов
/ 23 июля 2010

Чтобы изменить метку поля электронной почты, вы можете создать подкласс UserCreationForm следующим образом

from django import forms
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.forms import UserCreationForm

class MyUserCreationForm(UserCreationForm):
    username = forms.RegexField(label=_("Email"), max_length=30, regex=r'^[\w.@+-]+$',
        help_text = _("Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."),
        error_messages = {'invalid': _("This value may contain only letters, numbers and @/./+/-/_ characters.")})

Добавление полей first_name и last_name не так просто, поскольку метод сохранения формы принимает только имя пользователя, адрес электронной почты и пароль. Две возможности:

  • переопределить метод сохранения формы
  • отображать UserChangeForm после создания пользователя (это то, что делает приложение администратора Django)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...