1

Django の ASP.NET で UserControl のような最善の方法を探しています。

例: 1) 定義された Book モデルがあります。2) サイト全体で使用したい書籍の通常の表現があります (「book_template.html」と呼ばれます)。

ここで、recent_books_view、popular_books_view という 2 つのビューからこの 1 つの表現を使用したいとします。のように直接行うことができます


from django import template

t = template.Template('My name is {{ name }}.') book1_context = template.Context({'book': Book1}) book2_context = template.Context({'book': Book2}) book3_context = template.Context({'book': Book3}) ...

render_to_response('recent_books.html', {'content': t.render(book1_context) + t.render(book2_context) + t.render(book3_context)})

render_to_response('popular_books.html', {'content': t.render(book4_context) + t.render(book5_context) + t.render(book6_context)})

しかし、もっと良い方法があると確信しています...

たとえば、ASP.NET では、テンプレート ファイルで「この共有テンプレートの配列 'Books' に適用する」と指定し、バックエンドで変数 'Books' を指定するだけです。Djangoでそれは可能ですか?

4

2 に答える 2

3

あなたのpythonコードで:

context['books'] = blah blah # Make a list of books somehow.
return render_to_response('popular_books.html', context)

popular_books.html で:

<p>Look, books:</p>
{% for book in books %}
    {% include "book.html" %}
{% endfor %}

最後に、book.html で:

<p>I am a book, my name is {{book.name}}</p>

カスタムタグを作成するなど、モジュール化するより興味深い方法があるため、たとえば次のことができます。

<p>Look, books:</p>
{% for b in books %}
    {% book b %}
{% endfor %}
于 2009-08-07T23:15:28.800 に答える
0

このチュートリアルを探していると思いますDjango book: The Django Template System の第4章

ブロックタグとテンプレートの継承を参照してください。

于 2009-08-07T21:37:00.747 に答える