1

Djangoのクラスメソッドからテンプレートを参照することは可能ですか? モデルに次のクラスがあるとします (オフライン スピーカー シリーズの場合)。

class Event(models.Model): 
    name = models.CharField(max_length=300)
    date = models.DateTimeField()
    desc = models.TextField(blank=True, null=True)
    location = models.ForeignKey('Location', blank=True, null=True)
    speaker = models.ForeignKey('Speaker', blank=True, null=True)

そして、これらの属性を使用してテンプレートに入力し、結果の HTML の文字列を API 投稿で使用したいと考えています。次のようなクラス メソッドから HTML テンプレートを参照するにはどうすればよいですか。

def create_event_html(self):
    # This is not working with or without Quotes        
    t = Template(templates/event_template.html) 

    c = Context(self)
    return t.render(c)

特定の条件を指定して保存時にこのクラスメソッドを呼び出したいのですが、ここでは関係ないと思います...

4

1 に答える 1

3

Template(templates/event_template.html)それは単に有効なPythonではないため、決して機能しません-(存在しない)値「テンプレート」を(存在しない)オブジェクト「event_template」の「html」属性で除算しようとしています。それが明確でない場合は、Python の入門チュートリアルを行う必要があります。

Template('templates/event_template.html')は有効な Python ですが、テンプレート ファイルの間違った場所を検索します。テンプレート ローダーは既に「テンプレート」の下を検索するため、「event_template.html」ファイルの「templates/templates/」を検索します。ディレクトリ参照を削除します。

それが完了Contextすると、辞書を期待する別の問題が発生し、 self. モデル クラスをオーバーライド__getitem__しない限り、これは機能しません。おそらく 1 つのエントリを持つ辞書を渡すだけでよいでしょう。たとえば{'item': self}、テンプレートで のさまざまな属性を参照できますitem

于 2013-04-08T06:46:32.207 に答える