如何在同一个基于类的视图下拥有两个单独的查询集

时间:2017-09-07 21:16:35

标签: python django django-models django-views many-to-many

我正在尝试拥有一个朋友列表,其中列出了所有与您相关联的人员,并通过href将您发送到他们的个人资料但获得:

`Reverse for 'view_profile_with_pk' not found. 'view_profile_with_pk' is not a valid view function or pattern name.

在我获得的HTML追溯详细信息中:

return render (request, self.template_name, args)

Views.py

class ViewProfile(generic.ListView):
        model = Post
        template_name = 'accounts/profile.html'
        def view_profile(request, pk=None):
            if pk:
                user = User.objects.get(pk=pk)
            else:
                user = request.user
            kwargs = {'user': request.user}
            return render(request, 'accounts/profile.html', kwargs)
    def get(self, request):
        users =User.objects.all()
        object_list= Post.objects.filter(owner =self.request.user).order_by('-timestamp')
        args ={'object_list':object_list,'users':users}
        return render (request, self.template_name, args)

urls.py

 # profilepage
        url(r'^profile/$', views.ViewProfile.as_view(), name='view_profile'),

    # profilepage
    url(r'^profile/(?/P<pk>\d+)/$', views.ViewProfile.as_view(), name='view_profile_with_pk'),

profile.html

    <div class="col-md-4">
        <h1>Friends</h1>
          {%for user in users %}
          <a href="{% url 'accounts:view_profile_with_pk' pk=user.pk  %}">
            <h3>{{user.username}}</h3>
          </a>

          {%endfor%}
    </div>

1 个答案:

答案 0 :(得分:1)

在你的urls.py中:

url(r'^profile/(?/P<pk>\d+)/$', views.ViewProfile.as_view(), name='view_profile_with_pk'),
#                ^  this character shouldn't be here

应该是

url(r'^profile/(?P<pk>\d+)/$', views.ViewProfile.as_view(), name='view_profile_with_pk'),