2010-08-04 7 views
6

Attualmente sto affrontando un problema serio. Io uso l'interfaccia di amministrazione django standard incl. cambia elenco per visualizzare uno dei miei modelli. Il modello ha un campo, che include un collegamento (ad esempio nel database: http: // localhost: 8000/data/somefile.pdf '> link).Mostra stringa HTML senza escape nella lista modifiche amministratore Django

Quello che voglio ora è che questa stringa è resa senza caratteri di escape e visualizzato come collegamento. Ho già provato quanto segue 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 %} 

ho usato "| sicuro" sulla voce effettivo che viene emesso. Inoltre ho provato "{% autoescape off%}". Stesso risultato, la stringa è stata scappata.

Si vede un altro modo per ottenere la stringa visualizzata senza caratteri maiuscoli?

risposta

15

si desidera impostare allow_tags=True sul metodo. È un po 'nascosto, ma è descritto nella documentazione - su uno schermo o giù di lì da dove lo prende this link.

+0

Daniel, grazie per il suggerimento. Ho dovuto definire un metodo nel modello che restituisce il collegamento e contrassegnare questo metodo .allow_tags = True. –

+0

Poiché il collegamento, risponde ancora corretto. Ma 'allow_tags' è deprecato in Django 1.9. Usa 'format_html()' invece: 'Deprecato dalla versione 1.9: Nelle versioni precedenti, puoi aggiungere un attributo allow_tags al metodo per impedire l'autoesclusione. Questo attributo è deprecato poiché è più sicuro usare format_html(), format_html_join() o mark_safe() invece. https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display – gabrieloliveira

Problemi correlati