web-dev-qa-db-ja.com

DjangoビュークラスのURLから主キーにアクセスする

私のDjangoアプリでは、次のようにカスタムビュークラスにマップされたURLパターンがあります。

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

問題は、ビュークラスのURLパターン文字列から 'pk'にアクセスして、データベースIDに基づいて特定のモデルオブジェクトを取得する方法を理解できないことです。私はググって、Djangoのドキュメントを調べ、Stack Overflowを検索しましたが、満足のいく答えをまったく見つけることができません。

誰か教えてもらえますか?

22
Luke

クラスベースのビューでは、URLのすべての要素がself.args(名前のないグループの場合)またはself.kwargs(名前のグループの場合)に配置されます。したがって、あなたの見解では、self.kwargs['pk']を使用できます。

60
Daniel Roseman

ビューの主キーにアクセスするには、post =

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

これは、URLでpkを使用してオブジェクトを取得するDjango restframeworkに基づく例です。

views.py

class ContactListView(generics.ListAPIView):
    queryset = Profile.objects.all()
    serializer_class = UserContactListSerializer

    def get(self, request, pk, *args, **kwargs):
        contacts = Profile.objects.get(pk=pk)
        serializer = UserContactListSerializer(contacts)
        return Response(serializer.data)

urls.py

    url(r'^contact_list/(?P<pk>\d+)/$', ContactListView.as_view())
1
Milad shiri