2013-04-22 2 views
-2

Я хочу создать неактивного пользователя и отправить им электронную почту активации. Это мое мнение:Django-Create User

secret = hexlify(os.urandom(6)) 
userName = form.cleaned_data['email'] 
if User.objects.filter(username=userName): 
    message = EmailMessage('portal/pay_email2.html',{'refid':pk, 'amount':total,'Payment':Payment,'secret': secret }, 'Madeeha ', to=[form.cleaned_data['email']]) 
    message.send() 
else: 
    userPass = hexlify(os.urandom(4)) 
    userMail = form.cleaned_data['email'] 
    user = User.objects.create_user(userName, userMail,userPass) 
    user.save() 
    message = EmailMessage('portal/pay_email.html',{'refid':pk, 'amount':total,'Payment':Payment,'userName':userName, 'userPass':userPass, 'secret': secret }, 'Madeeha ', to=[form.cleaned_data['email']]) 
    message.send() 
+2

чем проблема? –

+0

Я создаю пользователя, но он создает активного пользователя, и я хочу создать неактивного пользователя и отправить им почту для активации –

ответ

3

Метод User.objects.create_user создаст пользователь с активным флагом, установленным в действительность.

У вас есть несколько вариантов:

  • После сохранения вы можете установить значение быть ложным, а затем обновить (дополнительный запрос к базе данных)
  • Вы можете создать пользователя с помощью более ручного обозначения (не используя вспомогательный метод)
  • Override метод create_user с ключ-значение для is_active = False:

    # create_user(username, email=None, password=None, **extra_fields) User.objects.create_user('username', email='email', password='pass', is_active=False)

1

Прежде всего, вы должны поделиться своей моделью пользователей. Если это Django 1.5, вы можете/должны определить поле состояния для таких пользователей, как is_active, is_admin, is_superuser. (Например, MattWritesCode).

Тогда вы можете просто создать пользователя с помощью простого QuerySet:

create_user = UserProfile.objects.create_user(username=xxx, [email protected], is_active=False, is_admin=False) 
Смежные вопросы