Как отключить активацию электронной почты в приложении регистрации django?
Как отключить активацию электронной почты в приложении регистрации django?
Ответ 1
Вы всегда можете изменить эту строку, чтобы:
new_user = RegistrationProfile.objects.create_inactive_user(username=self.cleaned_data['username'],
password=self.cleaned_data['password1'],
email=self.cleaned_data['email'],
profile_callback=profile_callback,
send_email = False)
Или вы можете изменить эту строку на:
def create_inactive_user(self, username, password, email,
send_email=False, profile_callback=None):
Ответ 2
В текущих версиях django-регистрации есть простой бэкэнд без электронной почты, и вы можете написать собственный бэкэнд, чтобы указать необходимый рабочий процесс. См. Здесь https://bitbucket.org/ubernostrum/django-registration/src/fad7080fe769/docs/backend-api.rst для документации.
Чтобы использовать простой без электронной почты, просто измените urls.py, чтобы указать на этот бэкэнд, например.
(r'^accounts/', include('registration.backends.simple.urls')),
Ответ 3
Почему бы не использовать этот метод и просто использовать простой бэкэнд, который поставляется с регистрацией django, а не по умолчанию
Новый рабочий поток будет... 1. Пользователь регистрируется, заполняя регистрационную форму. 2. Учетная запись пользователя создается и немедленно активируется без промежуточного подтверждения или активации. 3. Новый пользователь регистрируется немедленно.
так что на вашем основном urls.py вы бы изменили:
url(r'^accounts/', include('registration.backends.default.urls')),
к
url(r'^accounts/', include('registration.backends.simple.urls')),
Ответ 4
Лучше исправить проблему в корне, чем перевязать, вызывая команды для автоматической активации пользователя.
Добавьте этот метод в категорию registration.py:
def create_active_user(self, username, email, password,
site):
"""
Create a new, active ``User``, generate a
``RegistrationProfile`` and email its activation key to the
``User``, returning the new ``User``.
"""
new_user = User.objects.create_user(username, email, password)
new_user.is_active = True
new_user.save()
registration_profile = self.create_profile(new_user)
return new_user
create_active_user = transaction.commit_on_success(create_active_user)
Затем отредактируйте запись /backend/defaults/ init.py и найдите метод register().
Измените следующее, чтобы вызвать новый метод:
#new_user = RegistrationProfile.objects.create_inactive_user(username, email,
#password, site)
new_user = RegistrationProfile.objects.create_active_user(username, email,
password, site)
Ответ 5
Вместо того, чтобы изменять приложение регистрации, почему бы просто не активировать пользователя так же, как django-registration делает:
Посмотрев на это еще больше... Я думаю, что вы хотите использовать оба решения. Вероятно, добавьте вышеуказанный код сразу после изменения, предложенного Домиником (хотя я бы предложил использовать сигналы или, если возможно, подклассифицировать форму)
OK final Ответ:
new_user = RegistrationProfile.objects.create_inactive_user(username=self.cleaned_data['username'],
password=self.cleaned_data['password1'],
email=self.cleaned_data['email'],
profile_callback=profile_callback,
send_email = False)
RegistrationProfile.objects.activate_user(new_user.activation_key)