Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Django中创建用户配置文件页面_Django_Django Models - Fatal编程技术网

在Django中创建用户配置文件页面

在Django中创建用户配置文件页面,django,django-models,Django,Django Models,我是Django的初学者。我需要建立一个网站,每个用户都有一个个人资料页。我见过django管理员。用户的配置文件页面应存储一些只能由用户编辑的信息。有人能告诉我怎么可能吗?。任何教程链接都会非常有用。此外,django是否有任何模块可用于设置用户页面 如果用户正在创建GET请求,您只需要创建一个可供认证用户使用的视图,并返回一个配置文件编辑表单;如果用户正在创建POST请求,则需要更新用户的配置文件数据 大部分工作已经为您完成,因为有许多用于编辑模型的工具,例如。您需要扩展的是检查经过身份验证

我是Django的初学者。我需要建立一个网站,每个用户都有一个个人资料页。我见过django管理员。用户的配置文件页面应存储一些只能由用户编辑的信息。有人能告诉我怎么可能吗?。任何教程链接都会非常有用。此外,django是否有任何模块可用于设置用户页面

如果用户正在创建
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!
你可以

  • 创建另一个模型以存储有关用户的配置文件信息
  • AUTH\u PROFILE\u MODULE='yourprofileapp.ProfileModel'
    添加到settings.py
  • 在配置文件编辑视图中,仅允许登录用户编辑自己的配置文件

    例如:

    @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,我一定会应用您的更改。