私はDjango Rest FrameworkのポストのAPIリストを持っています。 私のポストタイトルをslugifyします。ユーザーが投稿にタイトルを付けるときはいつでも、プラグインオブジェクトが提供されていないときはpk(DRFのデフォルトルックアップフィールド)でポストAPIの詳細をキャプチャします。投稿にタイトルがある場合はスラッグフィールド。Django Rest Framework DetailPIViewのスラッグまたはpk参照フィールド
は、適用後の私のAPIフォルダで、私は次のviews.pyに書いた:
class PostDetailAPIView(generics.RetrieveAPIView):
queryset = Post.objects.all()
serializer_class = serializers.PostDetailSerializer
try:
lookup_field = 'slug'
except:
lookup_field = 'pk'
を、対応するurls.pyを提供:
urlpatterns = [
url(r'^$', PostListAPIView.as_view(), name='list-api'),
url(r'^(?P<slug>[\w-]+)/$', PostDetailAPIView.as_view(),
name='detail-api'),
url(r'^(?P<pk>\d+)/$', PostDetailAPIView.as_view(), name='detail-
api'),
]
ときポストこのアプローチは完璧に動作しますslugified(タイトル)ルックアップを持っています。しかし、無スラグとのポストのためのポストの詳細ビューには、次のことを示しています
HTTP 404 Not Found
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
{
"detail": "Not found."
}
PKまたはスラグフィールドのルックアップのどちらかにポストAPIの詳細を表示する方法上の任意の提案を?好ましくは、urls.pyにコード反復はありません。
はい、私は多分何(スラッグを生成してユーザが自分の投稿のタイトルを提供するかどうか)にかかわらずスラッグを構築すべきだと考えていました。私は私のランダムなスラッグジェネレータ関数のロジックをやり直して、スラッグのためのルックアップフィールドを一回修正すると思います。歓声メイト。 –
これはあなたを助けてくれてうれしいです。投稿のタイトルをユーザーの必要に応じて考慮する方法はありますか?私はあなたが何を構築しているのかは分かりませんが、これは私には合理的です。 – Chgad
ちょっとChgad。私はinstagramのクローンをbuodingしています。 Instagramの投稿に必要なタイトルはありません。だから私は多分同じことをする必要があります。 –