当前位置: 代码迷 >> python >> Django注册配置文件-用户配置文件的下一步
  详细解决方案

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

热度:55   发布时间:2023-07-14 08:58:23.0

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

我现在想做的是,当我单击username时,将出现一些选项,如“ edit profile或“ change password 我的问题如下:

  1. 我是否应该创建另一个模型(在另一个新应用程序内),其中包含个人资料照片,性别,生日等字段,并从django.contrib.auth.modelsUser模型添加外键? 还是应该从django-registration修改模型以添加一些其他字段,但是我在注册阶段不要求这些字段,而仅在以后更新它们?

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

我希望我能说清楚。 我正在尝试在编码之前找出哪种方法是最好的方法,因为我是Django的新手...谢谢

我发现将配置文件表与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)

这是一个高层示例,给出了实现此目标的一种方法。

  相关解决方案