django - 无法从 Django URL 获取参数
问题描述
我正在使用 Django REST Framework,我想获取在 URL 中输入的两个参数。
我的网址是:
http://127.0.0.1:8000/api/v1/colleges/slug2/courses/sug1/
其中“slug2”和“sug1”是输入的两个slug参数。
我想在我的 ModelViewSet 中检索这两个参数
视图.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)
网址.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 并因此出现问题。
是否有任何特定的方法来获取这些参数。
提前致谢。
解决方案
试试这个
def get_serializer(self, *args, **kwargs):
if self.action == 'retrieve':
slug1 = self.kwargs.get('slug1')
slug2 = self.kwargs.get('slug2')
queryset = Course.objects.filter(slug2=slug2)
return Response(CollegeCourseSerializer(queryset, many=True).data, status=status.HTTP_200_OK)
在您的 urls.py 中,我只看到 1 个 slug 被通过i.e slug not slug1
。因此,如果您想解析另一个 slug,那么您可能需要将其添加到您的 URL 中,然后在视图中解析它。如果您希望您的网址看起来像这样
http://127.0.0.1:8000/api/v1/colleges/slug2/courses/slug1/
然后你必须将你的 urls.py 更改为
path('api/v1/colleges/<slug:slug2>/course/<slug:slug1>/', include(router.urls)),
推荐阅读
- r - 使用 wlidcard 对成对矩阵进行子集
- python - ARIMA模型的Python多处理
- php - 管理繁重文件夹的文件传输的最佳方法
- javascript - 映射对象,在单个循环中删除元素
- java - Netty 框架 - 多端口监听
- angular - 如何在 Angular 2 中管理用户级别的访问?
- spring - Spring Boot + Liquibase - 启动期间出现 NotWritablePropertyException
- oracle - IMPDP:如何只导入表数据
- php - 使用 Rest Api 从 Outlook 365 Exchange 读取电子邮件帐户
- c# - 发生一个或多个错误。(无法反序列化当前的 JSON 对象(例如))