2017-07-19 26 views
0

我尝试显示基于PK的用户配置文件。所以,我创建了一个名称为“Profile”的菜单。用户单击菜单后,用户可以看到该配置文件。Django,使用库检索用户配置文件没有调用模型的用户

我尝试这样做:

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}) 

在base.html文件:

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

而且在模板中,profile.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/$'] 
+0

错误是一样的。 –

+0

''User.objects.filter(pk = pk)在浏览器中,并确保你有pk,url的格式是正确的。 –

+0

@Scarlettstone检查您的profile.html的源代码''User.objects.filter(pk = pk)' –

回答

0

你的问题实在是很难理解,所以我正在做一个猜测。

只有在您的个人资料视图本身的情况下才有一种叫做“个人资料”的功能。但是您的基本模板用于所有视图,而所有其他视图不包含有该变量可用;所以它不能使用该值创建配置文件链接。

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

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

还要注意,您的第二个配置文件视图本身是错误的。

+0

我的意思是,我想显示用户的个人资料。我像你一样尝试,但错误仍然相同。 –

+0

显示完整的错误消息。 –

相关问题