Django,使用没有调用模型的库用户检索用户配置文件



我尝试根据PK显示用户配置文件。因此,我创建了一个名称为"配置文件"的菜单。用户单击菜单后,用户可以看到配置文件。

我试过这个:

def view_profile(request, pk):
profile = get_object_or_404(User, pk=pk)
return render(request, 'girl/base.html', {'profile':profile}) 

还有这个:

def view_profile(request, pk):
profile = User.objects.filter(User, pk=pk)
return render(request, 'base.html', {'profile':profile})

在底座中.html:

{% if user.is_authenticated %}
<a href='{% url "profile" pk=profile.pk%}' class="prof"><span class="pro">Profile</span></a>
{% endif %}

在模板中,配置文件.html:

{% extends 'base.html' %}
{% block content %}
{% if user.is_authenticated %}
<h2><a href="{% url 'profile' pk=profile.pk %}">{{ profile.username }}</a></h2>
{% endif %}
{% endblock %}

urls.py

url(r'^cat/(?P<pk>d+)/profile/$', views.view_profile, name='profile')

配置文件从未显示,我收到以下错误:

Reverse for 'profile' with keyword arguments '{'pk': ''}' not found. 1 pattern(s) tried: ['cat/(?P<pk>\d+)/profile/$']

你的问题真的很难理解,所以我在猜测。

您仅在个人资料视图本身的上下文中才有一个名为"配置文件"的东西。但是,您的基本模板用于所有视图,并且所有其他视图都没有该变量可用;因此,它不能使用该值来创建配置文件链接。

但是我不知道为什么您认为需要此变量。您想要的根本不是配置文件,而是当前用户;如您所知,这在模板中始终可用,通过名为 Unsurprisinglyuser的变量,因为您已经在使用它来检查身份验证状态。您应该在基本模板中使用它:

{% if user.is_authenticated %}
<a href='{% url "profile" pk=user.pk%}' class="prof"><span class="pro">Profile</span></a>
{% endif %}

另请注意,配置文件视图的第二个版本本身是错误的。

最新更新