[英]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' %}"> 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})
get_object_or_404(User.objects
更改为get_object_or_404(User
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' %}"> 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' %}"> 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.