Django modello di fuggire

Django sistema di template fornisce alcune opzioni (filtri) per sfuggire contenuto nel codice html, ma sono un po ‘ di confusione per me come un principiante. Dire che sto seguendo un tutorial per realizzare un semplice blog, il blog e il contenuto deve essere sfuggito – ho fiducia nel contenuto, perché io sono l’unica modifica. Quindi la domanda è: devo fare come {{ post.content|autoescape }}, {{ post.content|escape }}, o {{ post.content|safe }} in html?

Grazie

EDIT: Che filtro devo usare caratteri speciali convertito in entità html automaticamente?

EDIT 2: ho appena realizzato che autoescape non è un filtro valido.

InformationsquelleAutor user14412 | 2012-07-03

 

4 Replies
  1. 45

    HTML escape è attivata per impostazione predefinita in modelli di Django.

    Autoescape è un tag. non è un filtro:

    {% autoescape on %}
        {{ post.content }}
    {% endautoescape %}

    La “fuga” filtro sfugge una stringa HTML. In particolare, rende queste sostituzioni:

    • < viene convertito &lt;
    • > viene convertito &gt;
    • ‘ (apice singolo) è convertita in &#39;
    • ” (doppio apice) è convertita in &quot;
    • & viene convertito &amp;

    L’ ‘force_escape’ è quasi identica alla ‘fuga’, tranne che per alcuni casi particolari.

    ‘Sicura’, filtro segno di contenuti come cassetta di sicurezza, quindi non sarà sfuggito (sarà inviato al browser come sono).

    Che filtro devo usare caratteri speciali convertito in entità html automaticamente?

    Bene, vuoi dire che, come la conversione di à per &Atilde;? Stick con la codifica utf-8 e dimenticare quelle.

    • Molto utili, elenco personaggi. Fa ‘fuga’ lavoro di filtro per sia elemento HTML per il testo e i valori di attributo? ad esempio, <a title="{{ title }}">{{ text }}</a>
    • Credo che lavorare ovunque, ma non sono sicuro di aver capito la tua domanda. A volte è meglio postare una nuova domanda, perché è più probabile per aiutare gli altri con gli stessi dubbi.
    • sul luogo dove la fuga filtro non può funzionare bene all’interno <script></script>, in questo caso, utilizzare {{ value|escapejs }}
    • Lo script/escapejs punto è molto utile. Ero preoccupato per diversi fuga esigenze HTML valori di attributo (tra virgolette) rispetto all’elemento HTML contenuti (al di fuori della parentesi angolari). &quot; e &#39; dovrebbe coprire le virgolette. Ho pensato che ho letto tempo fa che i valori di attributo non deve contenere terminatori di riga, ma non ora.
    • a mia conoscenza terminatori di riga all’interno di attributi sono legali, parola per parola. Si può leggere su attributo XML normalizzazione o qualcosa di simile.
    • Destra, era un XHTML cosa. “Evitare le interruzioni di riga e di più caratteri spazio vuoto all’interno di valori di attributo.” Contento che è finita.

  2. 21

    prima di tutto, si dovrebbe sfuggire i tuoi contenuti, perché non si sa mai (anche se si è l’uno che inserire i dati), se avete intenzione di bisogno di carattere speciale (come < >, ).

    Sintassi che consente di dimostrare che sono a disagio con l’uso di fuggire :

    questo

    {% autoescape on %}
        {{ content }}
    {% endautoescape %}

    è esattamente lo stesso come questo

    {{ content|escape }}

    questo

    {{ content }}

    è esattamente lo stesso come questo <– edit : Se il autoescape è OFF (grazie a Paolo Scardine)

    {{ content|safe }} 

    Sicuro è utilizzare come che :

    {% autoescape on %}
        {{ content }}  <-- escape
        {{ content|safe }}  <-- not escape
    {% endautoescape %}
    • content e content|safe sarà lo stesso se autoescape è spento, che non è l’impostazione predefinita per quanto ne so.
    • Grazie! Ho pensato di sicurezza e di fuga sono simili..
  3. 9

    La tua domanda dimostra che siete un po ‘ confusi su ciò che la fuga è.

    Escape è svolta non sicuri personaggi, il tag HTML – in sfuggito versioni in modo che i contenuti dannosi come i tag script non rovinare il vostro sito. Django fa presente di default su tutti i contenuti resi in un modello da una variabile.

    Sembra dal tuo commento che sei l’unica modifica il contenuto che si desidera rendere il vostro variabili senza automatico di fuggire. Quindi, per questo, è necessario contrassegnare come cassetta di sicurezza. È possibile eseguire questa operazione nel modello, da avvolgere il tutto in {% autoescape off %}...{% endautoescape %} tag o via {{ myvar|safe }} filtro sulle variabili individuali. Oppure, si può fare in vista, chiamando mark_safe(myvar) sulle variabili individuali prima di passare al template.

    • Grazie per la tua risposta. In realtà sto cercando di sfuggire al contenuto piuttosto che marcare come sicuro. Ho pensato che la cassetta di sicurezza filtro mezzi per rendere il contenuto al sicuro…
  4. 0

    Per evitare la fuga uso “sicuro” (https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#safe):

    Segna una stringa come non necessitano di un ulteriore HTML fuggire prima dell’uscita. Quando autoescaping è spento, questo filtro non ha alcun effetto.

    Di fuga uso “fuga” (https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#escape):

    Sfugge una stringa HTML.

    • Capito adesso. Era ancora confusa con la “sicura” e “fuga” anche se.

Lascia un commento