Ho lavorato alla creazione di un'estensione markdown python che inserirà una galleria di immagini all'interno del mio progetto django quando viene utilizzato un tag personalizzato. L'estensione attuale funziona, ma l'HTML restituito dall'estensione è tutto codificato. Qui è l'estensione che sto usando:Disabilitare la codifica HTML all'interno dell'output dell'estensione personalizzata Markdown Markdown
#!/usr/bin/env python
from django.template.loader import render_to_string
from main.models import *
import markdown
version = "0.1.0"
class GalleriaExtension(markdown.Extension):
def __init__(self, configs):
self.config = {
}
# Override defaults with user settings
for key, value in configs:
self.setConfig(key, value)
def add_inline(self, md, name, klass, re):
pattern = klass(re)
pattern.md = md
pattern.ext = self
md.inlinePatterns.add(name, pattern, "<reference")
def extendMarkdown(self, md, md_globals):
self.add_inline(md, 'galleria', Galleria,
r'\[\[(G|g)allery (?P<superpage_id>\w+)\]\]')
class Galleria(markdown.inlinepatterns.Pattern):
def handleMatch(self, m):
try:
images = SuperPage.objects.get(id=m.group('superpage_id')).superpageimage_set.all()
except:
images = None
if images:
rendered = render_to_string('galleria.html', { 'images': images })
else:
rendered = '<b>There are no images for the given ID</b>'
return rendered
def makeExtension(configs=None) :
return GalleriaExtension(configs=configs)
ho assicurato che la render_to_string
è stato effettivamente tornando html che non è stato codificato. Dalla shell qui è un esempio di output:
uscita da render_to_string
:
>>> from django.template.loader import render_to_string
>>> images = SuperPage.objects.get(id=8).superpageimage_set.all()
>>> render_to_string('galleria.html', { 'images': images })
u'<div class=\'galleria_std\'>\n <div class=\'gallery\' >\n <div id=\'stage_gallery\' >\n'
Qui viene emesso dal markdown
estensione che è codificato:
>>>markdown.markdown('test [[gallery 8]] test', ['galleria'])
u'<p>test <div class=\'galleria_std\'>\n <div class=\'gallery\' >\n'
Come posso fare rendered
ritorno HTML mark up invece di markup codificato quando si utilizza l'estensione markdown? Inoltre, apprezzerei qualsiasi suggerimento su come codificarlo in modo diverso (sintassi, layout, ecc.). Lo apprezzo.
Hai trovato una soluzione? –