用户应该能够注册和认证
django.contrib.auth
是你需要的模块。一定要查看自定义登录表单的文档。
每个用户都应该有个配置文件(或者带有所有必需字段的模型)
你需要设置 settings.AUTH_PROFILE_MODULE
,正如其他人所指出的。
有关设置用户配置文件模型的信息可在最新版本、1.1和1.0中找到。它还未被删除。
用户不需要Django内置的管理面板,但需要通过简单的Web表单编辑其配置文件/模型
你可以创建一个表单和视图,就像处理任何其他应用程序一样;也许创建一个“用户控制面板”应用程序来处理这些事情。随后,你的视图将与 django.contrib.auth.models.User
和 django.contrib.auth.models.Group
模型交互。你可以设置它以满足你的需要。
编辑:回答你的问题(召唤Alex Trebek)...
djangobook第二版,涵盖django1.0(比0.96更接近1.2),没有在任何地方提到这个信息,这让我非常困惑——有什么改变吗?有其他更好,更安全的方法来处理用户及其配置文件吗?因此问了这个问题。
我不建议将djangobook作为参考;它在这个主题上已经过时。用户配置文件存在,并且我正在我的Django 1.1.1网站上使用它们;我甚至从NIS填充它们。
请使用我提供的链接。它们直接指向 实际的Django文档,是权威的。
顺便说一下,忘记问了,如果你们所有人所说的方式(即AUTH_PROFILE_MODULE)将在注册时自动创建吗?
文档中有回答。
并要求在任何操作时都存在配置文件(没有现有的、填写完整的配置文件的用户不应该存在,这就是我在考虑如何扩展用户模型)?
如果调用User.get_profile()
,则需要配置文件存在。
它也会更新吗(人们在与此主题相关的各种博客上提到了“信号”)?
它就像任何其他模型一样:只有在你更改字段并调用save()
时才会更新。
信号部分是如何钩入函数以为新用户创建配置文件的:
from django.db.models.signals import post_save
from django.contrib.auth import User
from myUserProfileApp import UserProfile
def make_user_profile(sender, **kwargs):
if 'created' not in kwargs or not kwargs['created']:
return
profile = UserProfile(user=kwargs["instance"])
profile.save()
post_save.connect(make_user_profile, sender=User, weak=False)
这只会为新用户创建一个新的个人资料。已存在的用户需要手动添加个人资料:
$ ./manage.py shell
>>> from django.contrib.auth import User
>>> from myUserProfileApp import UserProfile
>>> for u in User.objects.all():
... UserProfile(user=u).save()
...
如果你有些用户有个人资料,而有些没有,你需要做更多的工作:
>>> for u in User.objects.all():
... try:
... UserProfile(user=u).save()
... except:
... pass