Django注册配置文件 - 用户配置文件的下一步

时间:2014-03-10 12:42:50

标签: python django django-registration

我已将django-registration app安装到我的项目中。登录成功后,我将用户重定向到localhost:8000/ - 这是我的默认测试主机和端口。我正在页面的某个位置显示登录的username user

我现在要做的是,当我点击username时,会出现edit profilechange password等选项。我的问题如下:

  1. 我是否应该创建另一个模型(在另一个新应用内),其中包含个人资料照片,性别,生日等字段,并从Userdjango.contrib.auth.models模型添加外键?或者我应该从django-registration修改模型以添加一些额外的字段,但我在注册阶段没有要求,只在以后更新它们?

  2. 如果我希望我的profile edit功能位于/accounts/edit,这是最好的做法吗?编辑项目的URLconf并在(r'^accounts/edit$',.....)之前添加(r'^accounts/', include('registration.backends.default.urls')),之类的行?

  3. 我希望自己清楚明白。我想在编码之前弄清楚哪种方法是最好的方法,因为我是Django的新手......谢谢

1 个答案:

答案 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)

这是一个高级示例,可以让您了解实现它的一种方法。