0

'module' object is not callable次のテンプレート タグを使用します。

projectname/controlpanel/templatetags/__init__.py(空ファイル)

projectname/controlpanel/templatetags/md_to_html.py

from django import template
from markdown import markdown

register = template.Library()


@register.filter(name='to_html')
def to_html(md):
    return markdown(md)

私のビューの 1 つで、 TextFieldを持つモデルのインスタンスである{'campaign': campaign}を返します。campaigndescription

<div class="span8" id="editor2">
   {{ selected_campaign.description|to_html }}
</div>
4

2 に答える 2

1

これを INSTALLED_APPS に追加します

'django.contrib.markup',

マークダウン ( http://pypi.python.org/pypi/Markdown ) を django プロジェクト ディレクトリにコピーします。

次に使用します

{% load markup %}
<div class="span8" id="editor2">
      {{ selected_campaign.description|markdown:"safe" }}
</div>

アップデート:

django.contrib.markupDjango 1.5 で非推奨になりました。これは、マークダウン フィルターの簡単な置き換えです。

'django.contrib.markup',から行を削除INSTALLED_APPS

テンプレートタグを作成する手順:

  • templatetags任意のフォルダーにフォルダーを追加しappます。
  • フォルダー内templatetagsに空のファイルを追加します__init__.py

これらのコードをmarkup.py内部に追加します。templatetags

from django import template
from django.utils.safestring import mark_safe
import markdown as mkdn

register = template.Library()     
@register.filter
def markdown(value,smode=None):
    return mark_safe(mkdn.markdown(value, safe_mode='escape'))
于 2013-06-22T04:49:44.570 に答える
0

理由markdownはわかりませんが、django の関数内では機能しないようです。たとえば、django シェル (python manage.py shell) でこれを入力しました。

from markdown import markdown

def yes():
     return markdown("YES")

次のエラーが表示されます。

NameError: global name 'markdown' is not defined

そしてこれはうまくいくようです

def yes():
     from markdown import markdown
     return markdown("YES")

django シェルの外では、最初の方法が正しく機能します。

于 2013-06-22T04:43:07.223 に答える