DRF-带有ModelViewSet的相对URL

时间:2018-08-06 15:32:39

标签: url django-rest-framework

我创建了一个非常简单的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}

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

是否需要在浏览器中为相对网址配置其他功能?

1 个答案:

答案 0 :(得分:0)

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

    class UserViewset(viewsets.ModelViewset):
        queryset = User.objects.all()
        serializer_class = UserSerializer