【问题标题】:Hyperlinks in Django for loop are linking to the same pageDjango for 循环中的超链接链接到同一页面
【发布时间】:2020-10-31 13:24:42
【问题描述】:

现在在用户的个人资料页面上,它显示了他们关注的人数以及他们关注的人的用户名。当用户点击用户名时,我只是希望它把用户带到该用户的个人资料页面,但现在它正在链接回同一个用户的个人资料页面,所以基本上只是重新加载页面。

我猜这是因为我将 user.username 作为关键字参数传递,因为当我遵循相同的格式但使用 user.id 时,我不会遇到这个问题。我想使用user.username,这样用户名就可以显示在url中了。

rofilePage.html
{% block body %}
<h3>{{ user.username }}</h3>
<br>
<br>

<p>{{ profile.number_of_friends }}</p>

<p>{% for friend in profile.get_friends %}</p>
    <a href="{% url 'profile' profile.user.username %}">{{ friend }}</a><br>
{% endfor %}
{% endblock %}

views.py:

def profile_page(request, user_username):
    profile = get_object_or_404(Profile, user__username=user_username)
    return render(request, "network/profilePage.html", {
        "profile": profile
    })

urls.py:

path("profile/<str:user_username>", views.profile_page, name="profile"),

models.py:

class User(AbstractUser):
    pass


class Profile(models.Model):
    user = models.OneToOneField("User", on_delete=models.CASCADE, primary_key=True)
    friends = models.ManyToManyField("User", related_name='following', blank=True, symmetrical=False)

【问题讨论】:

    标签: python django django-views django-urls


    【解决方案1】:
    <p>{% for friend in profile.get_friends %}</p>
        <a href="{% url 'profile' profile.user.username %}">{{ friend }}</a><br>
    {% endfor %}
    

    你在迭代朋友但没有提及,应该是&lt;a href="{% url 'profile' friend.user.username %}"&gt;{{ friend }}&lt;/a&gt;&lt;br&gt;

    【讨论】:

    • 触发无反向匹配错误。 NoReverseMatch at /profile/poetry Reverse for 'profile' with arguments '('',)' not found. 1 pattern(s) tried: ['profile/(?P&lt;user_username&gt;[^/]+)$']
    • 谢谢你,因为你很亲密,带领我走上正确的道路。传入参数friend.username 有效!
    【解决方案2】:

    {% for friend in profile.get_friends %}

    有问题吗?? 你要加入&lt;p&gt;标签?

    试试这个:

    {% for friend in profile.get_friends %}
    <p>
        <a href="{% url 'profile' profile.user.username %}">{{ friend }}</a><br>
    </p>    
    {% endfor %}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-18
      • 2017-11-02
      • 1970-01-01
      • 1970-01-01
      • 2012-09-13
      • 2016-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多