在Django中创建用户配置文件页面
我是Django的初学者。我需要建立一个网站,每个用户都有一个个人资料页。我见过django管理员。用户的配置文件页面应存储一些只能由用户编辑的信息。有人能告诉我怎么可能吗?。任何教程链接都会非常有用。此外,django是否有任何模块可用于设置用户页面 如果用户正在创建在Django中创建用户配置文件页面,django,django-models,Django,Django Models,我是Django的初学者。我需要建立一个网站,每个用户都有一个个人资料页。我见过django管理员。用户的配置文件页面应存储一些只能由用户编辑的信息。有人能告诉我怎么可能吗?。任何教程链接都会非常有用。此外,django是否有任何模块可用于设置用户页面 如果用户正在创建GET请求,您只需要创建一个可供认证用户使用的视图,并返回一个配置文件编辑表单;如果用户正在创建POST请求,则需要更新用户的配置文件数据 大部分工作已经为您完成,因为有许多用于编辑模型的工具,例如。您需要扩展的是检查经过身份验证
GET
请求,您只需要创建一个可供认证用户使用的视图,并返回一个配置文件编辑表单;如果用户正在创建POST
请求,则需要更新用户的配置文件数据
大部分工作已经为您完成,因为有许多用于编辑模型的工具,例如。您需要扩展的是检查经过身份验证的用户,并为其提供您想要为其提供编辑的对象。这是MTV triad中的视图组件,它提供了编辑用户配置文件的行为--配置文件
模型将定义用户配置文件,模板将离散地提供演示
下面是一些简单的解决方案:
from django.contrib.auth.decorators import login_required
from django.views.generic.detail import SingleObjectMixin
from django.views.generic import UpdateView
from django.utils.decorators import method_decorator
from myapp.models import Profile
class ProfileObjectMixin(SingleObjectMixin):
"""
Provides views with the current user's profile.
"""
model = Profile
def get_object(self):
"""Return's the current users profile."""
try:
return self.request.user.get_profile()
except Profile.DoesNotExist:
raise NotImplemented(
"What if the user doesn't have an associated profile?")
@method_decorator(login_required)
def dispatch(self, request, *args, **kwargs):
"""Ensures that only authenticated users can access the view."""
klass = ProfileObjectMixin
return super(klass, self).dispatch(request, *args, **kwargs)
class ProfileUpdateView(ProfileObjectMixin, UpdateView):
"""
A view that displays a form for editing a user's profile.
Uses a form dynamically created for the `Profile` model and
the default model's update template.
"""
pass # That's All Folks!
你可以
- 创建另一个模型以存储有关用户的配置文件信息
- 将
添加到settings.pyAUTH\u PROFILE\u MODULE='yourprofileapp.ProfileModel'
- 在配置文件编辑视图中,仅允许登录用户编辑自己的配置文件
例如:
@login_required def edit_profile(request): ''' edit profile of logged in user i.e request.user '''
- 您还可以确保,无论何时创建新用户,都会使用django的信号创建用户的配置文件
阅读django文档您已经开发了哪些内容?对docstrings使用双引号,使其具有正确的语法highlightingThanks-非常有用!为了让它工作,我必须做两件事:不是
@login\u required
而是@method\u decorator(login\u required)
(从django.utils.decorators导入)。不要使用BaseUpdateView
使用UpdateView
,否则会出现关于render\u to\u response
丢失的错误。谢谢@PhilGyford,我一定会应用您的更改。