Форма подписки с использованием Django Аллах - PullRequest
0 голосов
/ 13 марта 2020

Я недавно создал Django шаблон , используя allauth для абстрактного пользователя.

Я следовал рекомендациям Уильяма Винсента в его книге и настройкам в соответствии с документацией, но я в данный момент застрял.

Я хотел бы поддержать несколько форм регистрации для создания пользователя. 2 формы регистрации, которые я бы хотел поддержать:

  1. Создание учетной записи, которая использует типичное соглашение:
#my_project/setings.py
AUTH_USER_MODEL = ‘users.CustomUser’
LOGIN_REDIRECT_URL = ‘home’
LOGOUT_REDIRECT_URL = ‘home’
ACCOUNT_SESSION_REMEMBER = True
ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE = False
ACCOUNT_AUTHENTICATION_METHOD = ‘email’
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_USER_MODEL_USERNAME_FIELD = ‘username’
ACCOUNT_USER_MODEL_EMAIL_FIELD = “email”
Форма подписки пользователя (просто с электронной почтой и без пароля), которая использует то, что я придумал:
#users/forms.py
class CustomUserSubscribeForm(forms.ModelForm):
    class Meta:
    model = CustomUser
    fields = (‘email’, )

    email = forms.EmailField(
        label=_(''),
        widget=forms.TextInput(
                attrs={
                    'placeholder': _('john@email.com')
                    }
            )
    )
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.helper =  FormHelper()
        self.helper.form_show_labels = False
        self.helper.form_method = 'POST'
        self.helper.form_class = 'form-inline justify-content-center'
        self.helper.layout = Layout(
            Div(
                FieldWithButtons('email', Submit('Submit', 'submit', css_class='btn btn-outline primary')),
                Submit('submit', u'Submit', css_class='btn btn-success'),
                 css_class='form-inline'
            )
        )

#users/views.py
class SubscribePageView(CreateView):
    form_class = CustomUserSubscribeForm
    success_url = reverse_lazy(‘subscribe’)
    template_name = ‘subscribe.html’
#users/urls.py
from .views import SubscribePageView
urlpatterns = [
    path(‘subscribe’, SubscribePageView.as_view(), name=‘subscribe’),
]

Эти просмотры / html рендеринг страниц и базовая форма регистрации работает, но проблема, с которой я сталкиваюсь, заключается в том, что, когда я пытаюсь использовать форму подписки , я получаю ошибку целостности:

duplicate key value violates unique constraint "users_customuser_username_80452fdf_uniq"
DETAIL:  Key (username)=() already exists.

Любая помощь / руководство будет очень ценится здесь, поскольку я пытался справиться с этим миллионом различных способов за последнюю неделю. Спасибо!

...