2010-08-04 2 views
6

В настоящее время у меня серьезная проблема. Я использую стандартный интерфейс администратора django, вкл. изменить список, чтобы отобразить одну из моих моделей. Модель имеет поле, которое включает ссылку (например, в базе данных: http: // localhost: 8000/data/somefile.pdf '> ссылка).Отобразить неэкранированную строку HTML в Django Список изменений администратора

Что я хочу, так это то, что эта строка отображается без экранирования и отображается как ссылка. Я уже пробовал следующее в «change_list_results.html»:

{% for result in results %} 
<tr id="{{ result.1|adminfilter }}" class="{% cycle 'row1' 'row2' %}"> 
    {% for item in result %} 
     {{ item|safe }} 
    {% endfor %}</tr> 
{% endfor %} 

Я «| безопасно» на фактический элемент, который выводится. Кроме того, я попробовал «{% autoescape off%}». Тот же результат, String удалось сбежать.

Вы видите какой-либо другой способ получения строки, не отображаемой?

ответ

15

Вы хотите установить allow_tags=True на свой метод. Это немного спрятано, но это описано в документации - примерно на экране или около того, откуда вы берете this link.

+0

Даниил, спасибо за подсказку. Мне пришлось определить метод в модели, который возвращает ссылку и помечен этим методом .allow_tags = True. –

+0

Поскольку ссылка, ответ по-прежнему правильный. Но 'allow_tags' устарел в Django 1.9. Вместо этого используйте 'format_html()': 'Устаревший с версии 1.9: В более старых версиях вы можете добавить атрибут allow_tags для метода, чтобы предотвратить автоматическое экранирование. Этот атрибут устарел, так как безопаснее использовать format_html(), format_html_join() или mark_safe() вместо этого. '. https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display – gabrieloliveira

Смежные вопросы