Frage

Ich habe versucht, Syntaxhervorhebung zu bekommen in meinem einfachen Django (1.1) Test-App arbeitet mit Markdown (2.0.1) & Pygments (1,0). Die Idee ist, HTML vom Benutzer Eingang zu erzeugen, die in Abschlags-Format und speichert sowohl in der DB, also muß ich nicht während des Abruf den Abschlag zu html Übersetzung tun.

Bisher habe ich die Abschlag Verarbeitung arbeiten, aber ich kann nicht scheinen, Syntax-Hervorhebung Funktion zu erhalten. Mein models.py sieht wie folgt aus:

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)

So testet weit nur Abschlag funktioniert Syntax, aber wenn ich versuche, so etwas wie die folgend ich hervorheben in der Ausgabe oder die Ausgangsquelle keine Syntax gesehen:

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

Ich würde erwarten, dass mindestens eine Reihe von Codeelementen in der Ausgabequelle zu sehen.

War es hilfreich?

Lösung

Fixed it! Der Code sollte vier Räume nicht drei eingekerbt worden!

Ich habe mehrere Bearbeitungen, das zu testen, bevor die Frage zu stellen, aber es scheint Firefox die Seite als Verwendung als Test Post zwischengespeichert. Als ich hatte nicht die Tastenkombination Mac mit der Windows-Tastenkombination, um eine Seite neu laden zu erzwingen, d'oh!

Ich entdeckte es funktionierte, als ich aus Frust mit vier Raum Einrücken einen neuen Test Post gemacht und dann die Seite Quelle untersucht.

Andere Tipps

Es ist besser, es in der Datenbank in Abschlags-Format zu speichern und es dann an das Präsentationsformat umwandeln würden Sie (HTML) an Anzeigezeit mögen. So können Sie Ihre Daten auf die gleiche Weise bearbeiten können Sie hinzugefügt, um es in dem ersten Platz.

Am Anfang der Vorlage sollten Sie schließen ein:

{% load markup %}

Dann den Template Filter Abschlag verwenden.

{{ blog_post.body|markdown}}

Dann einfach CSS verwenden, um sicherzustellen, dass Sie die richtige Formatierung haben.

Sie müssen auch das Abschlags-Paket installieren wenn Sie dies nicht tun haben es hier.

Und in Ihrem settings.py in Ihrem INSTALLED_APPS sollten Sie umfassen 'django.contrib.markup'

Weitere Informationen finden Sie diese Seite .

Was, warum Sie nicht sehen Sie die Formatierung, überprüfen Sie die markiert Quelle und stellen Sie sicher, dass es richtig funktioniert. das heißt sicherzustellen, dass es richtig ist die Kennzeichnung auf. Dann stellen Sie sicher, dass die benötigten Stylesheets haben.

Markdown-Format ist das Format, bevor sie markiert ist.

Sie können auch verwenden JQuery eine Klasse zu den markierten up Elemente hinzuzufügen, so können Sie den Abschlags Textart ohne den Rest der Seite zu beeinflussen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top