2015-05-14 11 views
15

Ich versuche, auf eine Seite umzuleiten, die ich nach der Erstellung als Homepage eines Objekts implementieren möchte.Django "get() hat ein unerwartetes Schlüsselwort argument 'pk'" error

Unten Teil meines views.py

  new_station_object.save() 
      return HttpResponseRedirect(reverse("home_station", 
               kwargs={'pk': new_station_object.id} 
      )) 

class StationHome(View): 
    def get(self, request): 
     return HttpResponse("Created :)") 

und entsprechenden Teil meines urls.py entspricht;

url(r'^station/(?P<pk>\d+)$', StationHome.as_view(), name='home_station'), 

Aber ich bekomme den besagten Fehler;

TypeError at /station/2 
get() got an unexpected keyword argument 'pk' 

Jemand bitte helfen Sie mir aus.

Antwort

29

Die Funktion erhält ein Argument mehr als es soll. Ändern es an:

def get(self, request, pk): 

Der Wert von pk wird auf das Muster gleich sein, die abgestimmt ist, und da Sie angegeben haben, dass es geht um eine Zahl zu sein, wird die Art der pk int sein.

+0

Oops dumm von mir, danke viel :) –

+0

@wobbily_col Ich bin nicht sicher, ob es einen Unterschied macht, ob man ** kwargs oder fügen Sie einfach eine andere verwenden Streit. Ich glaube nicht, dass ich jemals Kwargs benutzt habe, um den Inhalt einer URL zu erhalten! Dies ist einfacher, da es nur ein (oder in anderen Fällen) Argument (e) ist. – rohithpr

+0

Es ist immer noch als Schlüsselwort Argument übergeben, so wird in ** Kwarts vorhanden sein. Führen Sie es in einem Debugger aus, und es wird dort sein. –

4

die kwargs in die Methodendefinition hinzufügen:

def get(self, request, *args, **kwargs): 
    return HttpResponse("Created :)") 
+0

Könnten Sie bitte http://stackoverflow.com/questions/30260201/django-typeerror-user-object-is-not-iterable Ich habe die Antwort auf die ursprüngliche Frage, aber ich habe weitere Probleme. Bitte gehen Sie durch den Kommentarbereich der angenommenen Antwort, die einzige. –

Verwandte Themen