Question

J'ai essayé de faire en sorte que la coloration syntaxique fonctionne dans ma simple application de test Django (1.1) à l'aide de Markdown (2.0.1) & amp; Pygments (1.0). L'idée est de générer du code HTML à partir de l'entrée de l'utilisateur au format Markdown et de le stocker dans la base de données afin que je n'ai pas à effectuer la traduction HTML au cours de la récupération.

Jusqu'à présent, le traitement de démarquage fonctionne mais je ne parviens pas à obtenir la surbrillance de la syntaxe. Mon modèles.py ressemble à ceci:

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)

Jusqu'ici, tester uniquement la syntaxe de démarquage fonctionne, mais si j'essaie quelque chose comme ce qui suit, je ne vois aucune surbrillance de syntaxe dans la sortie ou dans la source de sortie:

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

Je m'attendrais à voir au moins un ensemble d'éléments de code dans la source de sortie.

Était-ce utile?

La solution

Je l'ai corrigé! Le code aurait dû être mis en retrait de quatre espaces et non de trois!

J'ai fait plusieurs modifications pour tester cela avant de poser la question, mais il semblerait que Firefox ait mis en cache la page comme étant utilisée comme test. Comme j’avais utilisé le raccourci clavier Windows pour forcer une page à ne pas recharger le raccourci clavier Mac, oh!

J’ai remarqué que cela fonctionnait lorsque j’ai créé une nouvelle publication test après avoir été frustré par l’indentation de quatre espaces, puis j’ai inspecté le code source de la page.

Autres conseils

Il est préférable de le stocker dans la base de données au format Markdown, puis de le convertir au format de présentation souhaité (HTML) au moment de l'affichage. De cette façon, vous pouvez modifier vos données de la même manière que vous les avez ajoutées.

En haut de votre modèle, vous devez inclure:

{% load markup %}

Utilisez ensuite le marqueur de filtre de modèle.

{{ blog_post.body|markdown}}

Ensuite, utilisez simplement CSS pour vous assurer que vous avez le bon formatage.

Vous devez également installer le paquetage markdown si vous ne le faites pas. avoir ici.

Et dans votre fichier settings.py de votre INSTALLED_APPS, vous devez inclure "django.contrib.markup"

Pour plus d'informations, consultez cette page .

En ce qui concerne la raison pour laquelle vous ne voyez pas le formatage, vérifiez la source marquée et assurez-vous qu'elle fonctionne correctement. c’est-à-dire s’assurer que le marquage est correct. Assurez-vous ensuite que vous avez les feuilles de style nécessaires.

Le format de Markdown est le format qui l’a précédé.

Vous pouvez également utiliser JQuery pour ajouter une classe aux éléments marqués afin que vous puissiez styliser le texte de démarquage. sans affecter le reste de la page.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top