2012-11-23 10 views
11

Mam wzorzec URL odwzorowaną do niestandardowego widoku klasy w moim Django aplikacji, tak jak poniżej:Dostęp klucz podstawowy z URL w Django View Klasa

url(r'^run/(?P<pk>\d+)/$', views.PerfRunView.as_view()) 

Problem polega na tym, że nie może dowiedzieć się, w jaki sposób mogę uzyskać dostęp do "pk" z ciągu wzorca adresu URL w mojej klasie widoku, dzięki czemu mogę pobrać określony obiekt modelu na podstawie jego identyfikatora bazy danych. Mam google, przejrzałem dokumentację Django, przeszukałem Stack Overflow i nie mogę znaleźć satysfakcjonującej odpowiedzi.

Czy ktoś może mi powiedzieć?

+1

http://stackoverflow.com/questions/6427004/django-generic-view-subclassed-url-parameters Czy to pomoże? –

+1

https://docs.djangoproject.com/en/1.4/topics/class-based-views/#performing-extra-work przeczytaj drugą notatkę. – iMom0

+0

@Ankur Gupta Dzięki za linki, ale wciąż nie jestem do końca jasny. Czy to część self.kwargs? Myślałem, że rozumiem Django, dopóki nie dostałem się do poglądów opartych na klasach. Po prostu ich w ogóle nie rozumiem. – Luke

Odpowiedz

36

W widoku klasowym wszystkie elementy z adresu URL są umieszczane w self.args (jeśli są to grupy bez nazwy) lub self.kwargs (dla nazwanych grup). Tak więc, dla twojego widoku, możesz użyć self.kwargs['pk'].

+1

Posortowałem to teraz. Jeszcze lepiej rozumiem, jak działają klasy Django View. Dzięki! – Luke

2

aby uzyskać dostęp do klucza podstawowego w widokach post =

Class_name.objects.get(pk=self.kwargs.get('pk'))