我已经在我的项目中安装了 django-registration 应用程序。成功登录步骤后,我将用户重定向到 localhost:8000/ - 这是我的默认测试主机和端口。我在页面某处显示已登录 user 的 username。
我现在想做的是,当我点击用户名时,会出现一些选项,比如edit profile 或change password。我的问题如下:
我是否应该创建另一个模型(在另一个新应用程序中)包含个人资料照片、性别、生日等字段,并向
django.contrib 中的?或者我应该修改 django-registration 中的模型以添加一些额外的字段,但我在注册阶段不要求这些字段,以后才更新它们?User模型添加一个外键.auth.models如果我希望我的
profile edit功能位于/accounts/edit,最佳做法是什么?编辑我项目的 URLconf 并在(r'^accounts/', include( 'registration.backends.default.urls')),?
我希望我说清楚了。我试图在编码之前弄清楚哪种方法是最好的方法,因为我是 Django 的新手...谢谢
请您参考如下方法:
我发现将配置文件表与授权表分离更容易。就像您提到的那样,您可以使用外键关系将该配置文件链接到用户。您还可以在配置文件表中应用 lambda,以便在创建新用户对象时自动创建配置文件。
在您的模板中,您可以使用
根据当前经过身份验证的方动态链接到个人资料页面{% if request.user.is_authenticated %}
<a href="/user_profile/{{ request.user.id }}">Update Profile</a>
{% endif %}
user_profile 是您的应用名称,其中包含您的 user_profile 表。这样,当发出请求时,您可以使用当前用户 ID 的正则表达式(类似于 django 提供的轮询示例)来获取当前登录用户的 ID 号,而不是在 View 中查询该特定的数据库用户。
View .py
def myView(request, user_id):
userProfile = UserProfile.objects.get(user.pk=user_id)
这是一个高级示例,提供了实现它的一种方法。
