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