【发布时间】:2021-05-18 10:22:02
【问题描述】:
我正在使用 Django REST Framework,我想获取 URL 中输入的两个参数。
我的网址是:
http://127.0.0.1:8000/api/v1/colleges/slug2/courses/sug1/
其中 'slug2' 和 'sug1' 是输入的两个 slug 参数。
我想在我的 ModelViewSet 中检索这两个参数
views.py
class CollegeCourseViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Course.objects.all()
lookup_field = 'slug'
def get_serializer(self, *args, **kwargs):
if self.action == 'retrieve':
slug1 = self.kwargs.get('slug1')
slug2 = self.kwargs.get('slug2')
print(slug2)
queryset = Course.objects.filter(slug=slug2)
return Response(CollegeCourseSerializer(queryset, many=True).data, status=status.HTTP_200_OK)
urls.py
router = routers.DefaultRouter()
router.register(r'courses', CollegeCourseViewSet, basename='college_course_list')
urlpatterns = [
path('api/v1/colleges/<slug:slug>/', include(router.urls)),
]
但 slug2 输出 None 并因此出现问题。
有没有具体的方法来获取这些参数。
提前致谢。
【问题讨论】:
-
您正在尝试使用名称
slug2获取查询参数,但您的 url 模式仅定义slug参数。 -
我在 ViewSet 中包含了一个 lookup_field,因此在输入时它会给出第二个 slug。
-
lookup_field与要查找的模型字段相关 - > url 中的slug字段,所以您仍然无法在此处获得任何slug2。
标签: django django-rest-framework django-rest-viewsets