【问题标题】:Using .update() to add additional fields to django-registration?使用 .update() 向 django-registration 添加其他字段?
【发布时间】:2011-05-15 19:47:08
【问题描述】:

我在 django-registration 中添加了附加字段 first_name 和 last_name,并通过以下方式使其工作——

# `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() 是添加这些附加字段的好方法吗?如果没有,什么是更好的使用方法(由于某种原因,注册过程似乎执行得很慢)?谢谢。

【问题讨论】:

    标签: django django-models django-registration


    【解决方案1】:

    我想如果你使用.update() 来进行更改是没有问题的,尽管我个人会使用信号来做必要的事情。使用信号的好处是您可以清楚地将注册逻辑与应用程序相关的逻辑分开。例如:如果您有 Free UserPremium User 等不同的模型或类似的东西。

    注册过程并不慢。 “缓慢”很可能是因为 SMTP 服务器需要时间来发送邮件。您可以尝试django-mailer,它将需要发送的电子邮件排队。由于它是一个异步过程,因此您需要让 cron 每分钟左右发送电子邮件。但这会使您的注册过程“更快”,因为不会立即发送电子邮件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      • 2015-06-19
      • 1970-01-01
      • 1970-01-01
      • 2014-07-06
      • 1970-01-01
      相关资源
      最近更新 更多