Отключение кодировки HTML в выводе пользовательского расширения Python Markdown

Я работал над созданием расширения python markdown, которое будет вставлять галерею изображений в мой проект django, когда используется пользовательский тег. Само расширение работает, но HTML, который возвращает расширение, весь закодирован. Вот расширение, которое я использую:

#!/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)

Я убедился, что render_to_string действительно возвращает html, который не закодирован. Из оболочки вот пример вывода:

Вывод от 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'

Вот вывод от расширения markdown, который закодирован:

>>>markdown.markdown('test [[gallery 8]] test', ['galleria'])
u'<p>test &lt;div class=\'galleria_std\'&gt;\n    &lt;div class=\'gallery\' &gt;\n'

Как я могу заставить rendered возвращать HTML-разметку вместо закодированной разметки при использовании расширения markdown? Также буду признателен за любые указания на то, как закодировать это по-другому (синтаксис, разметка и т.д.). Буду признателен.

5
задан animuson 6 September 2012 в 21:10
поделиться