Destaque de sintaxe com Markdown & Pygments em Django
Pergunta
Eu tenho tentado obter destaque de sintaxe trabalhando no meu simples aplicativo de teste Django (1.1) usando Markdown (2.0.1) & Pygments (1,0). A idéia é gerar HTML a partir da entrada usuários que está no formato de remarcação e armazenar tanto no DB, então eu não tenho que fazer a remarcação para tradução html durante a busca.
Até agora eu tenho a remarcação processamento funcionando, mas eu não consigo obter destaque de sintaxe de trabalho. Meus olhares models.py como este:
from django.db import models
from django.contrib import admin
from markdown import markdown
class BlogPost( models.Model ):
title = models.CharField( max_length = 150 )
body = models.TextField()
body_html = models.TextField(editable=False, blank=True, null=True)
timestamp = models.DateTimeField()
def save(self):
self.body_html = markdown(self.body, ['codehilite'])
super( BlogPost, self).save()
class Meta:
ordering = ( '-timestamp', )
class BlogPostAdmin( admin.ModelAdmin ):
list_display = ( 'title', 'timestamp' )
admin.site.register(BlogPost, BlogPostAdmin)
Até agora testando sintaxe funciona apenas remarcação mas se eu tentar algo como o seguinte Eu não vi nenhum destaque de sintaxe na saída ou a fonte de saída:
:::python
from foo import bar
foobar = bar('foo')
Eu esperaria ver pelo menos um conjunto de elementos de código na fonte de saída.
Solução
Fixed-lo! O código deveria ter sido recuado quatro espaços não três!
Eu fiz várias edições para testar isso antes de fazer a pergunta, mas parece Firefox em cache a página como usar como um pós-teste. Como eu estava usando o atalho de teclado do Windows para forçar um recarregamento da página não é o atalho de teclado mac, d'oh!
Vi que estava trabalhando quando eu fiz um novo post de teste fora da frustração com quatro espaço recuando e depois inspecionou o código fonte da página.
Outras dicas
É melhor para armazená-lo no banco de dados em formato de remarcação e, em seguida, convertê-lo para o formato de apresentação que você gostaria (HTML) no tempo de exibição. Dessa forma, você pode editar seus dados da mesma forma que você adicionou-lo em primeiro lugar.
No topo do seu modelo que você deve incluir:
{% load markup %}
Em seguida, use o markdown filtro de template.
{{ blog_post.body|markdown}}
Em seguida, basta usar css para se certificar de que você tem a formatação adequada.
Você também precisa instalar o pacote remarcação se não o fizer tê-lo aqui.
E em seu settings.py em suas INSTALLED_APPS você deve incluir 'django.contrib.markup'
Para mais informações consulte esta página .
Quanto ao porquê de você não vê a formatação, verifique a fonte marcado e verifique se ele está funcionando corretamente. ou seja, certifique-se que está marcando corretamente. Em seguida, verifique se você tem as folhas de estilo necessários.
formato Markdown é o formato antes de ser marcado.
Você também pode usar JQuery para adicionar uma classe para os elementos marcados para cima, de modo que você pode estilizar o texto markdown sem afetar o resto da página.