2010-08-04 4 views
6

Ich stehe derzeit vor einem ernsten Problem. Ich benutze die Standard-Django-Admin-Schnittstelle inkl. Ändern Sie die Liste, um eines meiner Modelle anzuzeigen. Das Modell hat ein Feld, das einen Link enthält (z. B. in der Datenbank: http: // localhost: 8000/data/somefile.pdf '> link).Unlesbaren HTML-String in Django anzeigen Admin-Änderungsliste

Was ich jetzt will, ist, dass diese Zeichenfolge Unescapes gerendert und als Link angezeigt wird. Ich habe bereits versucht, die folgende in "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 %} 

I used "| safe" auf dem Artikel, der ausgegeben wird. Außerdem habe ich "{% autoescape off%}" ausprobiert. Gleiches Ergebnis, der String wurde entfernt.

Sehen Sie eine andere Möglichkeit, um die Zeichenfolge als unscaped anzuzeigen?

Antwort

15

Sie möchten allow_tags=True auf Ihre Methode setzen. Es ist ein bisschen versteckt, aber es ist in der Dokumentation beschrieben - über einen Bildschirm oder so, von wo this link Sie nimmt.

+0

Daniel, danke für den Hinweis. Ich musste im Modell eine Methode definieren, die den Link zurückgibt und diese Methode markiert.allow_tags = True. –

+0

Weil der Link, Antwort immer noch korrekt ist. Aber 'allow_tags' ist in Django 1.9 veraltet. Verwenden Sie stattdessen 'format_html()': 'Veraltet seit Version 1.9: In älteren Versionen konnten Sie der Methode ein Attribut allow_tags hinzufügen, um automatisches Escaping zu verhindern. Dieses Attribut ist veraltet, da es sicherer ist, format_html(), format_html_join() oder mark_safe() stattdessen zu verwenden. https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display – gabrieloliveira

Verwandte Themen