2009-08-04 18 views
5

私は、Markdown(2.0.1)& Pygments(1.0)を使用して、単純なDjango(1.1)テストアプリで構文ハイライトを有効にしようとしています。アイデアは、マークダウン形式のユーザー入力からHTMLを生成し、両方のDBに格納するので、フェッチ中にhtml翻訳にマークダウンする必要はありません。DjangoのMarkdown&Pygmentsでシンタックスハイライト

これまでのマークダウン処理は動作していますが、構文の強調表示が機能しないようです。私のmodels.pyは、次のようになります。

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

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) 

をこれまでのところだけ値下げ構文の作品をテストするが、私は出力または出力ソースで強調表示する構文を見たことがない以下のような何かをしようとした場合

出力ソースに少なくとも1セットのコード要素があると思うでしょう。

答えて

3

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

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

私は4つのスペースインデントで欲求不満から新しいテスト投稿を作成し、ページソースを検査したときにそれが動作していることを発見しました。

+0

アプリケーションキーボードshorcutsは複数のプラットフォームそのような痛みです。 – Danielb

+0

私はWindows上で作業する必要があるときにCtrlとAltを入れ替えます。すべてを解決するわけではありませんが(Windowsアプリケーションの作成者だけがPreferencesメニューの場所を決めるのであれば!)、確かに役立ちます。 –

1

マークアップ形式でデータベースに格納し、表示時に表示する形式(HTML)に変換する方がよいでしょう。こうすることで、最初に追加したのと同じ方法でデータを編集できます。

{% load markup %} 

を次にテンプレートフィルタの値下げを使用する:あなたが含まれている必要があり、あなたのテンプレートの上部に

{{ blog_post.body|markdown}} 

次に、CSSを使用して適切な書式設定を行ってください。

ここにそれがない場合は、install the markdown packageも必要です。

そしてあなたのINSTALLED_APPSであなたのsettings.pyにあなたは 'django.contrib.markup'

For more information see this pageを含める必要があります。

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

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

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

+0

私はユーザーが入力したとおりに元のデータを保存しています(マークダウンで編集を続けることができます)。処理された出力も保存されるため、使用するたびに変換する必要はありません。 – Danielb

+0

変換に必要な光処理については、スペースを節約する方が良いと思います。私は2つの場所で同じことをすることも嫌いですが、それはプログラマーであることの一部です。しかしそれはあなた次第です:) –

+0

"私も2カ所で同じことをするのは嫌いですが、それはプログラマーに過ぎないかもしれません。" Heeh、プログラマーである必要はない場合は2回同じ作業をするのは嫌いです) – Danielb

関連する問題