2

記事を表示するアプリケーションを作成しています。私のモデルには、記事のコンテンツを含む TextField があります。

ここで、記事内で別のアプリケーションをレンダリングできるようにしたいと考えています。投票アプリケーションがあり、記事の途中に投票を表示したいとします。どうやってやるの ?

投稿内に a を入れてみました{% render_poll 42 %}が、予想通り、生成されたページ内に表示されます。

[poll=42]レンダリングされた html ページを表示する前に、ある種のタグ (たとえば ) を作成して解析する必要がありますか? (私はマークダウンライブラリを使用していますが、おそらくそれを拡張できます。)「djangoフレンドリー」な方法を維持するにはどうすればよいですか?管理パネルで、記事内に投票 (または他のアプリ) を簡単に挿入できるようにしたいと考えています。

4

1 に答える 1

1

TextField 文字列をテンプレートとしてコンパイルできます。すなわち:

from django.db import models
from django.template import Template, Context


class YourModel(models.Model):
    body = models.TextField()

    def render_body(self, context=None):
        template = Template(self.body)
        context = context or {}
        context['object'] = self
        return template.render(Context(context))

{{ your_model.render_body }}次に、実際のテンプレートでは、ではなくを使用できます{{ your_model.body }}

于 2012-07-12T09:08:48.533 に答える