Markdown&による構文の強調表示DjangoのPygments
質問
Markdown(2.0.1)&を使用して、単純なDjango(1.1)テストアプリで構文の強調表示を機能させようとしています。 Pygments(1.0)。アイデアは、マークダウン形式のユーザー入力からHTMLを生成し、両方をDBに保存することです。これにより、フェッチ中にマークダウンからHTMLへの変換を行う必要がなくなります。
これまでのところ、マークダウン処理は機能していますが、構文の強調表示が機能していないようです。私のmodels.pyは次のようになります:
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)
これまでのところ、マークダウン構文だけをテストすることはできますが、次のようなものを試しても、出力または出力ソースで構文の強調表示が見られません:
:::python
from foo import bar
foobar = bar('foo')
出力ソースに少なくとも一連のコード要素が表示されることを期待しています。
解決
修正しました!コードは3つではなく4つのスペースでインデントされているはずです!
質問をする前に複数の編集を行ってテストしましたが、Firefoxはテスト投稿として使用しているページをキャッシュしたようです。 Macのキーボードショートカットではなく、Windowsのキーボードショートカットを使用してページを強制的に再読み込みしていたので、d'oh!
4つのスペースのインデントを使用してフラストレーションから新しいテストポストを作成し、ページソースを検査したとき、動作していることに気付きました。
他のヒント
データベースにマークダウン形式で保存し、表示時に目的のプレゼンテーション形式(HTML)に変換することをお勧めします。そうすれば、最初に追加したのと同じ方法でデータを編集できます。
テンプレートの上部に以下を含める必要があります。
{% load markup %}
テンプレートフィルターマークダウンを使用します。
{{ blog_post.body|markdown}}
次にcssを使用して、適切な書式設定がされていることを確認します。
マークダウンパッケージをインストールする必要がある場合ここにあります。
そして、INSTALLED_APPSのsettings.pyに「django.contrib.markup」を含める必要があります
フォーマットが表示されない理由については、マークアップされたソースを確認し、正しく機能していることを確認してください。つまり、適切にマークアップされていることを確認します。次に、必要なスタイルシートがあることを確認します。
マークダウン形式は、マークアップされる前の形式です。
JQuery を使用して、マークアップされた要素にクラスを追加して、マークダウンテキストのスタイルを設定することもできます。ページの残りに影響を与えません。