gpt4 book ai didi

python - 使用 django rest 框架的自定义 URL

转载 作者:太空狗 更新时间:2023-10-30 00:55:01 26 4
gpt4 key购买 nike

我正在尝试使用 django rest 框架将我的模型公开为 API。

序列化器

class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User

View 集

class UserViewSet(viewsets.ModelViewSet):
"""
API end point for User details and list
"""
serializer_class = UserSerializer
queryset = User.objects.all()

路由器

router.register(r'users',views.UserViewSet)

虽然这公开了/users/和 users/,但我希望我的 URL 也包含一个 user-slug,例如/users/1/xyz-user-name。

有人解决过这个问题吗?这是否需要更改 View 集和路由器代码,或者它是否只能在路由器代码中配置?我的“slug”并没有真正用于确定 url 路由,它只是为了提高 URL 的可读性。

有什么建议吗?

最佳答案

我能够通过使用此处发布的方法来实现它。

django-rest-framework HyperlinkedIdentityField with multiple lookup args

我收到的第二个错误是因为我在元部分中包含了 url 定义。它应该在元部分之前。我还必须在 View 集代码中指定查找字段。以下是我的代码的相关部分。

urls.py

from user.views import UserViewSet
user_list = UserViewSet.as_view({'get':'list'})
user_detail = UserViewSet.as_view({'get':'retrieve'})

urlpatterns= [
url(r'^users/$', user_list, name='user-list'),
url(r'^user/(?P<id>\d+)/(?P<slug>[-\w\d]+)/$', user_detail, name='user-detail'),
url(r'^api-auth/', include('rest_framework.urls',namespace = 'rest_framework'))
]

views.py:

class UserViewSet(viewsets.ModelViewSet):
"""
API end point for user details and user list
"""
lookup_field = 'id'
serializer_class = UserSerializer
queryset = user.objects.all()

序列化器.py

class UserSerializer(serializers.HyperlinkedModelSerializer):
url = ParameterisedHyperlinkedIdentityField(view_name='user-detail', lookup_fields=(('id', 'id'), ('slug', 'slug')), read_only=True)

class Meta:
model = user
fields = ('url','name','cover_photo')

关于python - 使用 django rest 框架的自定义 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32181885/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com