Как вернуть полный url не строкой?

В Django есть несколько способов вернуть полный URL в виде объекта, а не строки. Рассмотрим два основных способа для достижения этой цели.

1. Использование метода get_absolute_url модели:
Django предоставляет возможность добавить метод get_absolute_url к модели, который будет возвращать полный URL объекта. Для этого вам необходимо добавить этот метод в соответствующую модель.
Вот пример:

    from django.db import models
    from django.urls import reverse

    class MyModel(models.Model):
        # поля модели
        ...

        def get_absolute_url(self):
            return reverse('my_model_detail', args=[str(self.id)])

В данном примере используется функция reverse для получения URL-адреса объекта по его ID. 'my_model_detail' здесь является именем URL-шаблона вашего приложения.

Теперь, если у вас есть объект my_model, вы можете получить его полный URL следующим образом:

   url = my_model.get_absolute_url()

url будет объектом типа django.urls.resolvers.ResolverMatch, а не строкой.

2. Использование класса django.urls.resolvers.ResolverMatch:
Второй способ - воспользоваться классом ResolverMatch из модуля django.urls.resolvers. Этот класс представляет URL-шаблон и содержит полезную информацию о нем, включая полный URL.
Пример использования:

    from django.urls import resolve

    resolver_match = resolve('/my_path/')

В этом примере '/my_path/' — это путь URL, для которого вы хотите получить полный URL. resolve возвращает объект класса ResolverMatch, который содержит полную информацию о соответствующем URL-адресе, включая полный URL.

Вы можете получить полный URL из объекта resolver_match с помощью атрибута resolver_match.urlconf_name. Например:

   url = resolver_match.urlconf_name

В результате url будет объектом типа django.urls.resolvers.ResolverMatch, а не строкой.

Оба этих подхода позволяют получить объекты типа ResolverMatch, которые содержат полную информацию о URL-адресе, включая полный URL. Это полезно, если вы планируете использовать полученные объекты для дальнейшей обработки и передачи в другие функции или методы.