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

  • 30 августа 2023 г. 6:36
Ответы на вопрос 1
Для того чтобы получить полный URL в виде объекта, а не строки, в Django можно использовать метод `request.build_absolute_uri()` объекта запроса (`request`) в представлении.

Пример использования:

```python
from django.shortcuts import render

def my_view(request):
    full_url = request.build_absolute_uri()
    return render(request, 'my_template.html', {'full_url': full_url})
```

Теперь в шаблоне `my_template.html` вы можете использовать объект `full_url` без условного оператора:

```html
<p>{{ full_url }}</p>
```

Что касается второго вопроса, для того чтобы получить ссылку `<a href='tel:88005553535'>телефон</a>` в виде объекта, а не строки в методе `get_full`, можно воспользоваться классом `django.utils.html.format_html()` для форматирования HTML-кода. Например:

```python
from django.utils.html import format_html

def get_full(self):
    return format_html("<a href='tel:88005553535'>телефон</a>")
```

Теперь при использовании метода `get_full()` в шаблоне, ссылка будет отображаться именно как HTML-код:

```html
<p>{{ my_object.get_full|safe }}</p>
```

Примечание: Когда вы используете HTML-код, который вы доверяете, необходимо использовать фильтр `safe`, чтобы указать Django, что он должен рассматривать данный HTML как безопасный и отобразить его как есть.
Похожие вопросы