【问题标题】:Django Class Based view for a profile page个人资料页面的基于 Django 类的视图
【发布时间】:2015-08-12 14:50:53
【问题描述】:

我想使用基于类的视图来构建个人资料页面。是否有任何内置视图来实现这一点。例如:我使用auth_views 进行登录和注册。 Django auth.views 不包含配置文件视图。所以我决定使用 django inbuilts 创建我自己的,用于在配置文件中创建更新和删除任务。我应该使用哪个基于类的视图来实现这一点?

【问题讨论】:

    标签: django django-class-based-views django-profiles


    【解决方案1】:

    个人资料页面只不过是DetailView - 唯一的区别是对象是实际的用户个人资料。如果您想显示当前用户详细信息页面,只需覆盖 get_object 方法并从 request.session 返回用户(如果这与您的项目不同,则为配置文件)。

    【讨论】:

    • 如果用户未通过身份验证,如何自动重定向到登录页面
    • @SahalSajjad 如果您将视图保护为@login_required,它将在登录到所需页面后重定向到登录 ans。在基于类的视图中,您可以保护dispatch() 方法。
    【解决方案2】:

    阅读https://docs.djangoproject.com/en/1.8/topics/class-based-views/generic-display/#built-in-class-based-generic-viewshttps://docs.djangoproject.com/en/1.8/ref/class-based-views/generic-editing/#generic-editing-views 了解通用视图的详细信息。但是为了更好地理解基于类的视图,请阅读 django.views.generic 包中的源代码文件。

    【讨论】:

      【解决方案3】:

      来自我自己尝试学习 Django 的小实验(刚刚开始)

      base.html 中的代码 sn-p:

              {% if user.is_authenticated %}
                  <a href="{% url 'logout' %}">{{user.username}} Logout   -- </a>
                  <a href="{% url 'users:user_detail' user.pk %}">{{user.username}} Profile</a>
              {% else %}
                  <a href=="{% url 'login' %}">Login</a>
              {% endif %}
      

      从我的观点.py

      class UserDetailView(DetailView):
          model = User   # this is imported from django.contrib.auth.models
          context_object_name = 'user_object'
          template_name = 'users / user_detail.html'
      

      来自我的 user_detail.html 页面:(对于上面的代码 sn-p:user 变量由 django.contrib.auth.context_processors.auth 上下文处理器注入)

      {% if user == user_object %}
          <h4>user and object are the same. Welcome {{ user_object }}</h4>
      {% endif %}
      

      【讨论】:

        猜你喜欢
        • 2015-10-30
        • 2011-01-25
        • 1970-01-01
        • 2020-09-17
        • 2014-10-09
        • 2015-10-08
        • 1970-01-01
        • 1970-01-01
        • 2021-10-13
        相关资源
        最近更新 更多