繁体   English   中英

Django-显示用户创建的所有产品

[英]Django - display all products created by a user

我建立了一个产品应用程序,登录用户可以通过填写表格来创建产品。 有一个产品页面,列出了所有用户创建的所有产品。 当用户单击配置文件链接时,他们将看到他们创建的产品列表。 当用户登录时,其用户名将出现在导航栏中(这将在本帖子的后面进一步介绍)。

我想创建一个页面,访问者可以在其中按用户查看产品。 我创建了这个视图:

def designs_by(request, username):
    user = get_object_or_404(User.objects, username=username)
    products = Product.objects.filter(user=user)
    return render(request, 'designs_by.html', {'user':user,'products': products})

使用此网址:

url(r'^designs_by/(\w+)/$', views.designs_by, name='designs_by'),

该功能在大多数情况下有效,但是当访问者单击链接以查看用户查看产品时,导航栏上会显示用户个人资料链接。 链接无效,但我不知道为什么会出现。 是的,很奇怪。

编辑:这是右侧导航栏的代码,其中显示登录/配置文件/注销功能:

<ul class="navbar-nav navbar-right">
    {% if user.is_authenticated %}
            <li><a class="navbar-text navbar-right" href="{% url 'profile' user.username %}">
    {% if user.first_name and user.last_name %} {{user.first_name}} {{user.last_name}} {% else %} {{ user.username }} {% endif %} </a></li>
            <li><a class="navbar-text navbar-right" href="{% url 'Logout' %}">&nbsp;Logout </a></li>
    {% else %}
            <li><a class="navbar-text navbar-right" href="{% url 'Login' %}">Login </a></li>
    {% endif %}
</ul>

这是导航栏的屏幕截图-注意,我尚未登录该应用,但显示了个人资料名称。

在此处输入图片说明

编辑2:这是个人资料视图:

def profile(request, username):
    user = get_object_or_404(User.objects, username=username)
    products = Product.objects.filter(user=user)
    if not request.user == user:
        return render(request, 'no.html')
    else:
        return render(request, 'profile.html', {'user':user,'products': products})
  1. get_object_or_404(User.objects更改为get_object_or_404(User
  2. url(r'^designs_by/(\\w+)/$'更改为url(r'^designs_by/(?P<username>\\w+)/$'

用于模板;

<ul class="navbar-nav navbar-right">
  {% if request.user.is_authenticated %}
    <li>
      <a class="navbar-text navbar-right" href="{% url 'profile' username=request.user.username %}">
        {% if request.user.first_name and request.user.last_name %}
          {{ request.user.first_name }} {{ request.user.last_name }}
        {% else %}
          {{ request.user.username }}
        {% endif %}
      </a>
    </li>
    <li><a class="navbar-text navbar-right" href="{% url 'Logout' %}">&nbsp;Logout </a></li>
  {% else %}
    <li><a class="navbar-text navbar-right" href="{% url 'Login' %}">Login </a></li>
  {% endif %}
</ul>

我收回了-这没用-我又回到了问题所在。

我将导航栏正确的代码更改为此,并且它起作用了。 是匿名部分阻碍了该过程。

<ul class="navbar-nav navbar-right">
    {% if user.is_authenticated and user.is_anonymous %}
        <li><a class="navbar-text navbar-right" href="{% url 'profile' user.username %}">
            {% if user.first_name and user.last_name %} {{user.first_name}} {{user.last_name}} {% else %} {{ user.username }} {% endif %} </a></li>
        <li><a class="navbar-text navbar-right" href="{% url 'Logout' %}">&nbsp;Logout </a></li>
            {% else %}
        <li><a class="navbar-text navbar-right" href="{% url 'Login' %}">Login </a></li>
            {% endif %}
        </ul>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM