2017-09-07 4 views
1

Je suis en train d'avoir une liste d'amis de toutes les personnes qui vous sont connectés à des href qui vous envoie à leur profil, mais obtenir:Comment avoir deux requêtes ensembles distincts sous la même vue basée sur la classe

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

dans les détails de retraçage HTML i get:

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> 

Répondre

1

Dans votre urls.py les suivantes:

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

devrait être

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

Merci qui ont aidé, mais maintenant je suis confronté à la problème de: get() a un argument de mot clé inattendu 'pk' – Migdotcom

+0

@Migdotcom Je soupçonne que la méthode 'get()' qui reçoit un 'pk' kwarg inattendu est en fait celle sur votre vue - celle commençant par' def get (self, request): ' – Jiaaro