用户应该能够注册和认证
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 的第二个版本,涵盖 django 1.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
# Assumes that the `ForeignKey(User)` field in "UserProfile" is named "user".
profile = UserProfile(user=kwargs["instance"])
# Set anything else you need to in the profile, then...
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() # Add other params as needed.
...
如果您有一些用户有个人资料而另一些没有,您需要做更多的工作:
>>> for u in User.objects.all():
... try:
... UserProfile(user=u).save() # Add other params as needed.
... except:
... pass