添加用户的方式是否比使用以下模式更简单?
try:
new_user = User.objects.create_user(username, email, password)
except IntegrityError:
messages.info(request, "This user already exists.")
else:
new_user.first_name = first_name
# continue with other things
Run Code Online (Sandbox Code Playgroud)
nu *_*est 19
在Django 1.4中,用户存在get_or_create().
from django.contrib.auth.models import User
_user = User.objects.get_or_create(
username=u'bob',
password=u'bobspassword',
)
Run Code Online (Sandbox Code Playgroud)
最好不要IntegrityError
因为其他原因而抓住它.您需要检查用户是否存在,不包括密码.如果用户已存在,请设置密码.
user, created = User.objects.get_or_create(username=username, email=email)
if not created:
user.set_password(password)
Run Code Online (Sandbox Code Playgroud)
我不这么认为。但是您可以代理 Django 用户:
class MyUser(User):
class Meta:
proxy = True
def get_or_create(self, username, email, password, *args, **kwargs):
try:
new_user = User.objects.create_user(username, email, password)
except IntegrityError:
return User.objects.get(username=username, email=email)
else:
new_user.first_name = kwargs['first_name'] # or what you want
...etc...
return new_user
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6941 次 |
最近记录: |