UPDATE:
Pues al fin, aqui esta exactamente como agregar la coloracion a la sintaxis de nuestro codigo a travez de un filtro en Django. Primero installen pygments y beautifulsoup:
sudo apt-get install python-pygments python-beautifulsoup
Luego, en una applicacion existente en Django (o creen una si es que el filtro no se relaciona a una applicacion, aunque lo dudo) creen un directorio llamado templatetags al mismo nivel que models.py y views.py, en ese directorio creen un archivo llamado pygmentize.py y echenle el siguiente codigo:
from BeautifulSoup import BeautifulSoup
from django import template
from django.template.defaultfilters import stringfilter
import pygments
import pygments.formatters
import pygments.lexers
register = template.Library()
@register.filter
@stringfilter
def pygmentized(html):
soup = BeautifulSoup(html)
codeblocks = soup.findAll('pre')
for block in codeblocks:
if block.has_key('class'):
try:
code = ''.join([unicode(item) for item in block.contents])
lexer = pygments.lexers.get_lexer_by_name(block['class'])
formatter = pygments.formatters.HtmlFormatter()
code_hl = pygments.highlight(code, lexer, formatter)
block.contents = [BeautifulSoup(code_hl)]
block.name = 'pre'
except:
pass
return unicode(soup)
Una vez hecho esto, carga el filtro en tu template con el tag load:
Y a solo te queda filtrar tu contenido:
{{ micontenido|pygmentized }}
No olvides extraer las clases css de pygments con el siguiente comando en el interprete de python:
print HtmlFormatter().get_style_defs('.highlight')
Ese output lo pones en un archivo css, lo cargas en tu pagina, y listo -.- Ahora, formatea tu bloque de codigo con el tag y le agregas el lenguaje en la clase, por ejemplo, un bloque en python seria <pre class="python">from xyz import whatever</pre> y se veria asi