【问题标题】:URL to each user's profile in a list of users用户列表中每个用户个人资料的 URL
【发布时间】:2017-09-14 03:49:53
【问题描述】:

我的userprofile_list.html 模板中有以下代码:

{% extends "base.html" %}

{% block content %}

    {% for users in userprofile_list %}
        <a href="{% url 'users:user_profile' user.pk %}">
        <div class="user-card">
            <img class="profile-pic" src="{%if user.userprofile.profile_pic%}{{user.userprofile.profile_pic.url}}{%endif%}">
            <p class="user-card-name">{{ users.pk }}</p>
            <p class="user-card-name">{{ users.first_name }}</p>
            <p class="user-card-type">{{ users.user_type }}</p>
        </div>
        </a>
    {% endfor %}

{% endblock %}

请注意&lt;a href="{% url 'users:user_profile' user.pk %}"&gt; 行,我在我的应用程序的其他地方使用它,单击它会将您带到当前登录用户的个人资料。但是,我希望它将您带到您在 for 循环创建的用户列表中单击的任何用户的个人资料。如何更改 url 来做到这一点?

我认为必须做的是,与其获取当前登录用户的 pk,不如获取用户列表中该特定用户的 pk,然后将其传递给 url 模式(已经工作所以我没有发布它)。

注意:如果我对必须发生的事情的逻辑不正确,请告诉我您需要查看的内容以提供帮助。谢谢。

编辑

base.html:

<!DOCTYPE html>
{% load staticfiles %}

<html lang="en">
    <head>
        <title>Evverest</title>

        <meta name"viewport" content="width=device-width, initial-scale=1">
        <meta charset="uft-8">
        <link rel="shortcut icon" href="/images/favicon.ico">
        <link href="https://fonts.googleapis.com/css?family=Droid+Sans|Mukta+Mahee|Noto+Sans" rel="stylesheet">
        <link rel="stylesheet" href="{% static 'css/style.css' %}">
    </head>

<body>

    <nav>
        <div class="container">
            <a class="brand" href="{% url 'index' %}">Evverest</a>

            <div class="navbar">
                <a class="nav-link" href="{% url 'index' %}">Home</a>
                {% if user.is_authenticated %}
                    <a class="nav-link" href="{% url 'users:user_profile' user.id %}">
                        {{ user.username|capfirst }}
                    </a>
                    <a class="nav-link" href="{% url 'users:user_list' %}">All Members</a>
                    <a class="nav-link" href="{% url 'account_logout' %}">Logout</a>
                {% else %}
                    <a class="nav-link" href="{% url 'account_login' %}?next=/">Login</a>
                    <a class="nav-link" href="{% url 'account_signup' %}?next=/">Register</a>
                {% endif %}
            </div>
        </div>
    </nav>

    <div class="container">
        <div class="content">
            {% block content %}
            {% endblock %}
        </div>
    </div>

</body>

</html>

【问题讨论】:

    标签: python django


    【解决方案1】:

    我认为您在该链接中有错字。试试这个:

      <a href="{% url 'users:user_profile' users.pk %}"> 
    

    你正在使用 user.pk 循环变量是 users,所以你需要使用 users.pk,假设你已经创建了一个视图来编辑 user_profile 通过获取user_profile 的 pk。

    编辑 试试这个 base.html:

      <!DOCTYPE html>
      {% load staticfiles %}
    
      <html lang="en">
       <head>
        <title>Evverest</title>
    
        <meta name"viewport" content="width=device-width, initial-scale=1">
        <meta charset="uft-8">
        <link rel="shortcut icon" href="/images/favicon.ico">
        <link href="https://fonts.googleapis.com/css?family=Droid+Sans|Mukta+Mahee|Noto+Sans" rel="stylesheet">
        <link rel="stylesheet" href="{% static 'css/style.css' %}">
    </head>
    
    <body>
    
    <nav>
        <div class="container">
            <a class="brand" href="{% url 'index' %}">Evverest</a>
    
            <div class="navbar">
                <a class="nav-link" href="{% url 'index' %}">Home</a>
                {% if request.user.is_authenticated %}
                    <a class="nav-link" href="{% url 'users:user_profile' request.user.id %}">
                        {{ request.user.username|capfirst }}
                    </a>
                    <a class="nav-link" href="{% url 'users:user_list' %}">All Members</a>
                    <a class="nav-link" href="{% url 'account_logout' %}">Logout</a>
                {% else %}
                    <a class="nav-link" href="{% url 'account_login' %}?next=/">Login</a>
                    <a class="nav-link" href="{% url 'account_signup' %}?next=/">Register</a>
                {% endif %}
            </div>
        </div>
    </nav>
    
    <div class="container">
        <div class="content">
            {% block content %}
            {% endblock %}
        </div>
    </div>
    

    【讨论】:

    • 这样可行,但随后会导致另一个问题。它使用户按钮的列表转到他们的每个配置文件。但是,登录用户应该显示在导航栏中,当它将我带到新用户的个人资料时,它会显示该用户是导航栏而不是登录用户。这是 nabber 代码: {{ user.username|capfirst }}
    • 这是显示当前登录用户的导航栏链接。如果我以 Garrett 的身份登录,但我转到 Marc 的个人资料,导航栏中的链接将显示 Marc(并转到 Marc 的个人资料),但它仍应显示 Garrett(或任何登录的用户)
    • 将导航栏链接中的 user.id 替换为 request.user.id 并使用 request.user.username 而不是 user.username。这样做的原因是因为我认为您为视图创建了一个上下文变量 userrequest.user 返回当前登录的用户。如果这有效,请更新。
    • 它仍然会根据您查看的个人资料而变化。
    • 能否在问题中也包含 base.html?
    猜你喜欢
    • 2010-12-01
    • 1970-01-01
    • 2021-09-04
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    相关资源
    最近更新 更多