Django REST Framework. Как получить полный URL страницы с протоколом, доменом и путем?

#python #django #django-rest-framework

#python #django #django-rest-framework

Вопрос:

Существует Django REST framework. Мне нужно выгрузить полный путь к странице в тег. Например, есть страница:

 https://domain-name.com/category/article
 

В serializers.py:

 class someClass(serializers.ModelSerializer):
    url = serializers.URLField(source='get_absolute_url', read_only=True)
    class Meta:
        model = onlyURL
        fields = ['url']
 

Это работает некорректно, поскольку я не получаю полный URL, только часть:

 <url>**/category/article**</url>
 

Как получить полный URL с протоколом, доменом и путем?

Ответ №1:

Вы можете использовать serializers.SerializerMethodField() для этого. Например:

 class SomeClass(serializers.ModelSerializer):
    url = serializers.SerializerMethodField()
    class Meta:
        model = OnlyURL # using CamelCase for declaring Model Class
        fields = ['url']

    def get_url(obj):
       request = self.context.get('request')
       abs_url = obj.get_absolute_url()
       return request.build_absolute_uri(abs_url)
 

Также не забудьте передать request в качестве дополнительного аргумента или использовать общие представления / наборы представлений для этой реализации.

Комментарии:

1. Привет! Да, это именно то, что мне нужно. Спасибо!