我一直在努力实现处理不同的答案(例如Django-Registration & Django-Profile, using your own custom form)但是没有设法让它在我的项目中起作用,因为它似乎太过时了。
基本上我已经在我的项目中安装了Django-Registration,并且可以通过此方式对用户进行身份验证和创建。
但是,我已使用以下UserProfile模型扩展了用户:
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
account_type = models.IntegerField(null = True, default= 1)
daily_message = models.BooleanField(default = True)
tel_number = models.CharField(max_length=20, null = True)
def __str__(self):
return str(self.user)
我也希望如此:
以下内容链接在我的URLs.py:
中urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^accounts/', include('registration.backends.hmac.urls')),
url(r'^', include('app.urls'))
]
由于我对任何Django注册表单都没有可见性,而且很多文档描述了一个自定义用户模型(我没有),任何想法如何才能做到以上其中一种?
答案 0 :(得分:2)
有很多不同的方法可以实现这项任务,大多数类似django的方法都依赖于信号。更具体地说是user_registered信号。
registration.signals.user_registered在新用户帐户发送时发送 注册。提供以下参数:
发件人用于注册帐户的RegistrationView子类 用户表示新帐户的用户模型实例 请求 新帐户已注册的HttpRequest。
def create_user_profile(sender, user, requet):
'''
Creates a profile object for registered users via the
user_registered signal
'''
obj = UserProfile.objects.get_or_create(user=user)
另一种方法是继承RegistrationView。第二种方法是在User上捕获post_save信号。