@Cyber_bober

Как сделать регистрацию без username?

Привет, как можно сделать регистрацию без username в django?

views
def signup(request):
    user_form = UserCreateForm(data=request.POST)
    if request.method == 'POST':
        if user_form.is_valid():
            username = user_form.cleaned_data['username']
            password = user_form.cleaned_data['password2']
            user_form.save()
            user = authenticate(username=username, password=password)
            login(request, user)
            return redirect('/blog/new/')
        else:
            return index(request, user_form=user_form)
    return redirect('/auth')


forms

class UserCreateForm(UserCreationForm):
    email = forms.EmailField(required=True, widget=forms.widgets.TextInput(attrs={'placeholder': 'Email'}))
    first_name = forms.CharField(required=True, widget=forms.widgets.TextInput(attrs={'placeholder': 'First Name'}))
    last_name = forms.CharField(required=True, widget=forms.widgets.TextInput(attrs={'placeholder': 'Last Name'}))
    username = forms.CharField(widget=forms.widgets.HiddenInput(attrs={'placeholder': 'Username'}))
    password1 = forms.CharField(widget=forms.widgets.PasswordInput(attrs={'placeholder': 'Password'}))
    password2 = forms.CharField(widget=forms.widgets.PasswordInput(attrs={'placeholder': 'Password Confirmation'}))

    def is_valid(self):
        form = super(UserCreateForm, self).is_valid()
        for f, error in self.errors.iteritems():
            if f != '__all_':
                self.fields[f].widget.attrs.update({'class': 'error', 'value': strip_tags(error)})
        return form

    class Meta:
        fields = ['email', 'username', 'first_name', 'last_name', 'password1',
                  'password2']
        model = User
  • Вопрос задан
  • 264 просмотра
Решения вопроса 1
@Cyber_bober Автор вопроса
я заметил что в поиске сложно найти информацию по этому, все решения только в виде надстроек над django-registration. В моем случае я назначил полю Username значение EmailField

forms.py
Username = forms.EmailField(required=True, widget=forms.widgets.TextInput(attrs={'placeholder': 'Email'}))


не знаю, удастся ли мне работать с этими данными для рассылок и допустим активаций, но пока все работает.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@hellpirat
Full stack developer (Python/Django, React.js)
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы