DRF-带有ModelViewSet的相对URL

问题描述 投票:1回答:1

我创建了一个非常简单的API-REST,可以正常工作,但是现在所有链接都是绝对的URL,我想转换为相对URL。

我的配置的简历是:

model.py

class User(models.Model):
    name = models.CharField('name', max_length=255, unique=True)

    def __str__(self):
        return self.name

serializer.py

class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ('id','url','name')

views.py

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer

作为一种方式,我试图像这样重写ViewSet的上下文:

views.py

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer

    def get_serializer_context(self):
        return {'request': None}

现在使用此URL打印了相对URL,但是如果我使用浏览器导航,则链接将消失并且仅显示为文本,因此我无法单击differents元素。

是否还需要在浏览器中配置其他功能以使相对URL正常工作?

url django-rest-framework
1个回答
0
投票

解决方案取决于您的观点。根据官方docs,您必须像这样将请求传递给序列化程序上下文context = {'request': request}。尽管可以简单地删除序列化程序上下文方法或在该方法中返回super(),但这也将解决问题。这是修改后的视图:

    class UserViewset(viewsets.ModelViewset):
        queryset = User.objects.all()
        serializer_class = UserSerializer
© www.soinside.com 2019 - 2024. All rights reserved.