我将其他字段first_name和last_name添加到django-registration,并按以下方式运行 -
# `registration/backends/default/__init__.py`
from django.contrib.auth.models import User
class DefaultBackend(object):
def register(self, request, **kwargs):
username, email, first_name, last_name, password =
kwargs['email'], kwargs['email'], kwargs['first_name'], kwargs['last_name'], kwargs['password1']
if Site._meta.installed:
site = Site.objects.get_current()
else:
site = RequestSite(request)
new_user = RegistrationProfile.objects.create_inactive_user(username, email,
password, site)
# to create the additional first_name, last_name fields
additional = User.objects.filter(username=username).update(first_name=first_name, last_name=last_name)
signals.user_registered.send(sender=self.__class__,
user=new_user,
request=request)
return new_user
使用.update()
是一种添加这些附加字段的好方法吗?如果没有,那么什么是更好的使用方法(出于某种原因,注册过程确实表现得相当慢)?谢谢。
答案 0 :(得分:2)
我想如果你使用.update()
进行更改是没有问题的,尽管我会亲自使用信号来做必要的事情。使用信号的好处是,您可以清楚地将注册逻辑与您的应用相关逻辑分开。例如:如果你有免费用户和高级用户等不同型号或类似的东西。
注册过程并不慢。 “缓慢”很可能是因为SMTP服务器需要时间来发送邮件。您可以尝试django-mailer,将需要发送的电子邮件排队。由于它是一个异步过程,因此您需要让cron每分钟左右发送一次电子邮件。但它会使您的注册过程“更快”,因为电子邮件不会立即发送。