5

Markdown(2.0.1)とPygments(1.0)を使用して、単純なDjango(1.1)テストアプリで構文の強調表示を機能させようとしています。アイデアは、マークダウン形式のユーザー入力から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')

出力ソースに少なくとも一連のコード要素が含まれていると思います。

4

2 に答える 2

3

修正しました!コードは3つではなく4つのスペースにインデントされている必要があります。

質問をする前にそれをテストするために複数の編集を行いましたが、Firefoxがテスト投稿として使用しているようにページをキャッシュしたようです。私はWindowsのキーボードショートカットを使用して、Macのキーボードショートカットではなくページのリロードを強制していたので、d'oh!

4つのスペースインデントを使用してフラストレーションから新しいテスト投稿を作成し、ページソースを調べたところ、機能していることがわかりました。

于 2009-08-04T02:07:20.807 に答える
1

マークダウン形式でデータベースに保存し、表示時に希望のプレゼンテーション形式(HTML)に変換することをお勧めします。そうすれば、最初に追加したのと同じ方法でデータを編集できます。

テンプレートの上部に以下を含める必要があります。

{% load markup %}

次に、テンプレートフィルターのマークダウンを使用します。

{{ blog_post.body|markdown}}

次に、cssを使用して、適切なフォーマットになっていることを確認します。

ここにマークダウンパッケージがない場合は、マークダウンパッケージもインストールする必要があります。

また、INSTALLED_APPSのsettings.pyには、「django.contrib.markup」を含める必要があります。

詳細については、このページを参照してください

フォーマットが表示されない理由については、マークアップされたソースをチェックして、正しく機能していることを確認してください。つまり、正しくマークアップされていることを確認してください。次に、必要なスタイルシートがあることを確認します。

マークダウン形式は、マークアップされる前の形式です。

JQueryを使用して、マークアップされた要素にクラスを追加することもできるため、ページの残りの部分に影響を与えることなく、マークダウンテキストのスタイルを設定できます。

于 2009-08-04T01:43:56.610 に答える