Skip to main content
 首页 » 编程设计

python之Django registration-profile之用户配置文件的下一步

2025年05月04日24虾米哥

我已经在我的项目中安装了 django-registration 应用程序。成功登录步骤后,我将用户重定向到 localhost:8000/ - 这是我的默认测试主机和端口。我在页面某处显示已登录 user 的 username。

我现在想做的是,当我点击用户名时,会出现一些选项,比如edit profile 或change password。我的问题如下:

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

  2. 如果我希望我的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) 

这是一个高级示例,提供了实现它的一种方法。