Я использую фреймворк django auth для регистрации пользователя, а затем сразу же регистрирую пользователя. Вот мой код:Вход пользователя в Django после создания не работает
class SignUpView(FormMixin, ProcessFormView):
http_method_names = ['post']
form_class = UserCreationForm
success_url = reverse_lazy('default_page')
def form_valid(self, form):
if form.cleaned_data['is_usertype_1']:
self.success_url = reverse_lazy('some_page')
form.save()
user = authenticate(username=form.cleaned_data['username'], password=form.cleaned_data['password1'])
if user is None:
raise Exception("Could not authenticate the new user")
login(self.request, user)
return super(SignUpView, self).form_valid(form)
def form_invalid(self, form):
pass
В принципе, я продлил UserCreationForm
добавить is_usertype_1
поле, и отображение его в качестве BooleanField
. И используя эти данные, я определяю, куда пользователь перенаправляется после регистрации.
Но проблема возникает, когда я пытаюсь зарегистрировать созданного пользователя. No Exception получает повышение, но по какой-то причине последующие переадресации все еще содержат AnonymousUser
в request.user. Но когда я вхожу в систему с созданным пользователем вручную, логин работает нормально. Что я здесь делаю неправильно?
Спасибо за помощь заранее.
Вы уверены, что ваша форма верна? – danielcorreia
Да, новый пользовательский объект действительно сохраняется в БД (я вызываю form.save нет, где еще). Кроме того, только что изменил form_invalid, чтобы повысить исключение, но ничего не вызвало. –
После 'login (self.request, user)' попробуйте его проверить: 'if user.is_authenticated(): print (1)' – madzohan