Domanda

Ho un sito django-alimentato. Attualmente, tutti i campi di testo sono ingressi di testo vecchi appena pianura che prendono HTML grezzo. Non ho alcun editor di fantasia o nulla. Vorrei iniziare a usare Markdown e WMD per rendere le cose più facile per tutti.

Devo eseguire una sorta di script per andare su ogni campo di testo nel database per convertire tutti i HTML Markdown? Se si esegue il codice HTML attraverso il filtro Markdown, si è venuto fuori lo stesso dall'altra parte? Sarà l'editor WMD leggere il codice HTML dal server e convertirlo in Markdown per l'utente di modificare?

Qual è il modo corretto di agire qui?

È stato utile?

Soluzione 4

A quanto pare la conversione del vecchio HTML per Markdown è completamente inutile. Ho applicato il filtro django.contrib.markup.markdown ai miei modelli, e il codice HTML nei record del database legacy ero passata. Markdown in record non legacy è stato reso anche correttamente.

Certo, la mia applicazione web non consente agli utenti di essere modificando questi campi, quindi è ok per far passare direttamente attraverso HTML. Se questo era un campo modificabile dall'utente, come commenti o un wiki, questa soluzione non sarebbe sufficiente. Lei avrebbe dovuto passare il parametro di sicurezza al filtro modello mark-down, che striscia fuori tutto il codice HTML, e sarebbe necessario che i messaggi legacy scritte in HTML qualche HTML alla conversione Markdown.

Un'altra soluzione, in questo caso, sarebbe quello di scrivere un nuovo filtro modello che avvolse il filtro Markdown. Essa consentirebbe vecchi post HTML di passare attraverso, ma applicare il filtro mark-down sicuro per i messaggi non-legacy.

Altri suggerimenti

Come ho già detto sul vostra altra domanda , un buon motivo quando si utilizza Markdown è quello di memorizzare il testo nel mark-down e html formato nel database. In questo modo, non è necessario per la conversione in HTML ogni volta che la pagina viene visualizzata, ed è facile da modificare il mark-down originale nella amministrazione.

Per esempio, un'applicazione blog potrebbe avere

class BlogPost(models.Model):

    ...

    body = models.TextField(help_text='Use Markdown syntax.')
    #field to store generated html
    body_html = models.Textfield(editable=False, blank=True)

    ...

    def save(self):
        body_html=markdown(self.body)
        super(BlogPost, self).save()

    ...

Poi, nel modello, è possibile utilizzare {{body_html|safe}}.

Spero che ti dà un'idea di come si può voler modificare i vostri modelli. Temo di non avere suggerimenti su come gestire i dati legacy html.

WMD non fa Html-to-Markdown, solo viceversa; è possibile convertire HTML Markdown con html2text . WMD di default usa solo la prima area di testo come un editor di Markdown, ma si può ignorare che, oltre ad aggiungere anteprime - basta seguire le istruzioni nelle semplici esempi che vengono con ADM. L'API sta cambiando in ogni caso (e, al suo attivo, l'autore non fa mistero di questo) come le cose tutto si muove ad un concetto open-source più veramente, quindi non vale la pena che spiega in dettaglio in questo momento, e non cercando qualcosa di fantasia! -)

Fare attenzione quando si utilizza la risposta accettata. Per impostazione predefinita, la marcatura giù il testo non si occupa di rimuovere i tag non sicuri. Un utente malintenzionato può facilmente inserire HTML e può anche inserire tag script. Utilizzando {{body_html | sicura}} nel modello significherebbe l'esecuzione di codice HTML o uno script dell'utente. Provate voi stessi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top