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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top