2009-08-04 12 views
5

He estado tratando de obtener resaltado de sintaxis en mi aplicación de prueba simple Django (1.1) usando Markdown (2.0.1) & Pygments (1.0). La idea es generar HTML a partir de la entrada de los usuarios que está en formato de rebajas y almacenar ambos en la base de datos para no tener que hacer el rebaje de la traducción html durante la recuperación.resaltado de sintaxis con Markdown y Pygments en Django

Hasta ahora tengo el procesamiento de reducción funcionando pero parece que no puedo conseguir que el resaltado de sintaxis funcione. Mi models.py se ve así:

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 las pruebas obras de sintaxis acaba de rebajas, pero si intento algo como lo siguiente No había visto ninguna 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.

Respuesta

3

¡Se lo arregló! ¡El código debería haber sido sangrado cuatro espacios, no tres!

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

Me di cuenta de que estaba funcionando cuando hice una nueva publicación de prueba debido a la frustración con cuatro sangrías espaciales y luego inspeccioné la fuente de la página.

+0

Teclado de aplicación que varía en varias plataformas son tan dolorosos – Danielb

+0

Interrumpo Ctrl y Alt cuando tengo que trabajar en Windows. No resuelve todo (¡si solo los autores de la aplicación de Windows decidieran un lugar para sus menús de Preferencias!) Pero ciertamente ayuda. –

1

Es mejor guardarlo en la base de datos en formato de reducción, y luego convertirlo al formato de presentación que desee (HTML) en el momento de la visualización. De esta forma, puede editar sus datos de la misma manera que lo agregó en primer lugar.

En la parte superior de la plantilla que debe incluir:

{% load markup %} 

continuación, utilizar el filtro de reducción del precio de la plantilla.

{{ blog_post.body|markdown}} 

Luego, simplemente use css para asegurarse de que tiene el formato correcto.

También necesita install the markdown package si no lo tiene aquí.

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

For more information see this page.

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

El formato de reducción es el formato antes de marcarlo.

También puede usar JQuery para agregar una clase a los elementos marcados, de modo que puede aplicar estilo al texto de la marca sin afectar el resto de la página.

+0

Estoy almacenando el original tal como lo ingresó el usuario (para que puedan continuar editándolo con el descuento) y también estoy guardando el resultado procesado para no tener que convertirlo cada vez que lo use. – Danielb

+0

Para el procesamiento de luz que se necesita para convertirlo, creo que es mejor ahorrar espacio.También odio tener lo mismo en 2 lugares, pero tal vez eso sea parte de ser un programador. Pero depende de ti :) –

+0

"También odio tener lo mismo en 2 lugares, pero tal vez eso sea parte de ser un programador". Heh, odio hacer el mismo trabajo dos veces si no tengo que hacerlo, también soy parte de un programador;) – Danielb