我有一个关于Django Rest Framework的帖子的api列表。知道我强调我的帖子标题,每当用户为她的帖子提供标题时,我想用slug对象捕获pk(DRF中的默认查找字段)的post api细节如果帖子有标题,则提供或使用slug字段。
在我的后期应用程序的api文件夹中,我编写了以下views.py:
$users = $wpdb->get_results( "SELECT SUM(wp_wpdatatable_1.payback) as sumed FROM wp_wpdatatable_1", ARRAY_A);
并提供相应的urls.py:
class PostDetailAPIView(generics.RetrieveAPIView):
queryset = Post.objects.all()
serializer_class = serializers.PostDetailSerializer
try:
lookup_field = 'slug'
except:
lookup_field = 'pk'
当帖子具有slugified(标题)查找时,此方法非常有效。但是没有slug的帖子的帖子详细信息视图显示以下内容:
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'),
]
有关如何显示pk或slug字段查找的post api详细信息的任何建议?最好在urls.py中没有代码重复。
答案 0 :(得分:1)
首先:您的urls.py适用于第一个匹配的网址。所以它找不到你的第二个网址。
第二:在我看来,你应该坚持使用&#34; pk&#34;版本(这是REST声明的)或查找的slug版本。所以一般来说,我会期待寻找pk或slug的过程。
我知道这还没有解决你100%的答案,但它应该让你忽略了发生了什么以及REST端点可能是什么样子。
答案 1 :(得分:0)
对于单个视图使用两个不同的参数对我来说似乎是一个不好的做法,我建议你使用其中一个,在你的视图中,你做一个try / catch,因为pk将是整数类型,title将是字符串类型,您可以检查url参数的类型,然后执行您的逻辑