Запрос доступа к Аллаху Джанго в пользовательской форме регистрации - PullRequest
0 голосов
/ 11 июля 2019

Я хочу получить доступ к объекту запроса в методе init Django allauth

код пользовательской формы, который у меня есть

from allauth.account.forms import SignupForm
class CustomSignupForm(SignupForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        if 'email' in self.request.session:
            self.fields['email'].value = self.request.session['email']
            self.fields['email'].disabled = True

    def signup(self, request, user):
        user.first_name = self.cleaned_data['first_name']
        user.last_name = self.cleaned_data['last_name']
        user.save()
        return user

Пользовательское представление, которое я использую, это

from allauth.account.views import SignupView

class CustomFormSignupView(SignupView):
   form_class = CustomSignupForm

   def get_form_kwargs(self):
     kwargs = super().get_form_kwargs()
     kwargs['request'] = self.request
     return kwargs

1 Ответ

1 голос
/ 11 июля 2019

На самом деле вам не нужно переопределять представление учетной записи, чтобы поместить электронную почту в представление. Из this implementation я вижу, что, если вы установите в сеансе электронное письмо с ключом account_verified_email, оно должно появиться в форме.

Тем не менее, если вы переопределите accounts.SignupView, выполните следующие действия:

Во-первых, вам нужно ввести CustomFormSignupView в URL:

urlpatterns =+ [
     url(r'^accounts/', include('allauth.urls')),
     <b>url(r'^accounts/signup/$', CustomFormSignupView.as_view(), name="account_signup")</b>
]

И обновить форму:

from allauth.account.forms import SignupForm
class CustomSignupForm(SignupForm):
    def __init__(self, *args, **kwargs):
        <b>self.request = kwargs.pop('request', None)</b>
        super().__init__(*args, **kwargs)
        if 'email' in self.request.session:
            self.fields['email'].value = self.request.session['email']
            self.fields['email'].disabled = True

    def signup(self, request, user):
        user.first_name = self.cleaned_data['first_name']
        user.last_name = self.cleaned_data['last_name']
        user.save()
        return user
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...