Pregunta

He estado intentando que el resaltado de sintaxis funcione en mi sencilla aplicación de prueba Django (1.1) usando Markdown (2.0.1) & amp; Pigmentos (1.0). La idea es generar HTML a partir de la entrada de los usuarios que está en formato markdown y almacenar ambos en la base de datos para que no tenga que hacer la traducción markdown a html durante la búsqueda.

Hasta ahora tengo el procesamiento de rebajas funcionando pero parece que no puedo hacer que el resaltado de sintaxis funcione. Mi model.py tiene este aspecto:

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)

Hasta ahora, la prueba de la sintaxis de Markdown funciona, pero si intento algo como lo siguiente, no veo ningún resaltado de sintaxis en la salida o la fuente de salida:

   :::python
   from foo import bar
   foobar = bar('foo')

Esperaría ver al menos un conjunto de elementos de código en la fuente de salida.

¿Fue útil?

Solución

¡Lo arreglamos! ¡El código debería haber sido sangrado cuatro espacios, no tres!

Hice varias ediciones para probar eso antes de hacer la pregunta, pero parece que Firefox almacenó en caché la página como una publicación de prueba. Como había estado usando el atajo de teclado de Windows para forzar una recarga de página, no el atajo de teclado de Mac, ¡oh!

Descubrí que funcionaba cuando hice una nueva publicación de prueba por frustración con cuatro sangría de espacio y luego inspeccioné la fuente de la página.

Otros consejos

Es mejor almacenarlo en la base de datos en formato de descuento y luego convertirlo al formato de presentación que desee (HTML) en el momento de la visualización. De esa manera, puede editar sus datos de la misma manera que los agregó en primer lugar.

En la parte superior de su plantilla, debe incluir:

{% load markup %}

Luego use la marca de filtro de plantilla.

{{ blog_post.body|markdown}}

Luego, solo usa css para asegurarte de tener el formato adecuado.

También necesita instale el paquete de rebajas si no lo hace tenlo aquí.

Y en su settings.py en sus INSTALLED_APPS debe incluir 'django.contrib.markup'

Para obtener más información, consulte esta página .

En cuanto a por qué no ve el formato, verifique la fuente marcada y asegúrese de que funcione correctamente. es decir, asegúrese de que esté marcando correctamente. Luego, asegúrese de tener las hojas de estilo necesarias.

El formato Markdown es el formato antes de que se marque.

También puede usar JQuery para agregar una clase a los elementos marcados, de modo que pueda diseñar el texto de rebaja sin afectar el resto de la página.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top