質問

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 を使用して、マークアップされた要素にクラスを追加して、マークダウンテキストのスタイルを設定することもできます。ページの残りに影響を与えません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top