1

我正在寻找如何在 Django 中做最好的事情,比如 ASP.NET 中的 UserControl。

例如:1) 定义了一个 Book 模型 2) 我想在整个网站上使用这本书的常规表示(称为“book_template.html”)。

现在假设我想从 2 个视图中使用这一表示:recent_books_view、popular_books_view。它可以像这样直接完成


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 书的第 4 章:The Django Template System 的本教程。

请参阅块标签和模板继承。

于 2009-08-07T21:37:00.747 回答