【发布时间】:2018-04-01 12:15:49
【问题描述】:
我有一个 Django Rest Framework 的 api 帖子列表。知道 我 slugify 我的帖子标题,每当用户为她的帖子提供标题时,我想在没有 slug 对象时使用 pk(DRF 中的默认查找字段)捕获帖子 api 详细信息提供,或者如果帖子有标题,则使用 slug 字段。
在我的post应用的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(标题)查找时,这种方法非常有效。但是没有 slug 的帖子的帖子详细视图显示如下:
HTTP 404 Not Found
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
{
"detail": "Not found."
}
关于如何显示 pk 或 slug 字段查找的 post api 详细信息有什么建议吗?最好在 urls.py 中没有代码重复。
【问题讨论】:
标签: python django django-rest-framework