私のDjangoアプリでは、次のようにカスタムビュークラスにマップされたURLパターンがあります。
url( r'^run/(?P<pk>\d+)/$', views.PerfRunView.as_view( ))
問題は、ビュークラスのURLパターン文字列から 'pk'にアクセスして、データベースIDに基づいて特定のモデルオブジェクトを取得する方法を理解できないことです。私はググって、Djangoのドキュメントを調べ、Stack Overflowを検索しましたが、満足のいく答えをまったく見つけることができません。
誰か教えてもらえますか?
クラスベースのビューでは、URLのすべての要素がself.args
(名前のないグループの場合)またはself.kwargs
(名前のグループの場合)に配置されます。したがって、あなたの見解では、self.kwargs['pk']
を使用できます。
ビューの主キーにアクセスするには、post =
Class_name.objects.get(pk=self.kwargs.get('pk'))
これは、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())