Как отключить активацию электронной почты в приложении django-registration? - PullRequest
12 голосов
/ 03 декабря 2009

Как отключить активацию электронной почты в приложении django-registration?

Ответы [ 5 ]

13 голосов
/ 20 января 2012

В текущих версиях django-регистрации подсказок есть простой бэкэнд без электронной почты, и вы можете написать свой бэкэнд, чтобы указать желаемый рабочий процесс. См. Здесь https://bitbucket.org/ubernostrum/django-registration/src/fad7080fe769/docs/backend-api.rst для документации.

Чтобы использовать простой без электронной почты, просто измените ваш urls.py, чтобы указать на этот бэкэнд, например.

   (r'^accounts/', include('registration.backends.simple.urls')),    
7 голосов
/ 08 февраля 2013

Почему бы не использовать этот метод и просто использовать простой бэкэнд, который поставляется с django-registration вместо бэкенда по умолчанию?

Новый рабочий процесс будет ... 1. Пользователь регистрируется, заполнив регистрационную форму. 2. Учетная запись пользователя создана и активна немедленно, без промежуточного подтверждения или шага активации. 3. Новый пользователь вошел в систему немедленно.

так что на вашем основном urls.py вы бы изменили:

url(r'^accounts/', include('registration.backends.default.urls')),

до

url(r'^accounts/', include('registration.backends.simple.urls')),
6 голосов
/ 19 января 2011

Лучше исправить проблему в корне, чем перевязать ее, вызвав команды для автоматической активации пользователя.

Добавьте этот метод к регистрации models.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)
3 голосов
/ 03 декабря 2009

Вы всегда можете изменить эту строку на:

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):
1 голос
/ 03 декабря 2009

Вместо того, чтобы изменять приложение регистрации, почему бы просто не активировать пользователя таким же образом, как django-registration :

user.is_active = True user.save () profile.activation_key = "ALREADY_ACTIVATED" profile.save ()

Посмотрев еще больше ... Я думаю, что вы хотите использовать оба решения. Вероятно, добавьте приведенный выше код сразу после изменения, предложенного Домиником (хотя я бы предложил использовать сигналы или, если возможно, разделить на подклассы форму)

ОК, окончательный ответ:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...