【发布时间】:2017-10-31 03:19:46
【问题描述】:
我已经构建了一个产品应用程序,登录用户可以通过填写表格来创建产品。有一个产品页面,列出了所有用户创建的所有产品。当用户单击配置文件链接时,他们将看到他们创建的产品列表。当用户登录时,他们的用户名会出现在导航栏中(这将在本文后面进一步相关)。
我想创建一个页面,访问者可以在其中按用户查看产品。我创建了这个视图:
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})
【问题讨论】:
标签: python django permissions views