如何将数据发送到 Django 中的基本模板?

Posted

技术标签:

【中文标题】如何将数据发送到 Django 中的基本模板?【英文标题】:How can I send data to a base template in Django? 【发布时间】:2011-01-16 19:43:44 【问题描述】:

假设我有一个 django 网站,以及一个包含页脚的所有页面的基本模板,我想在我的网站上显示前 5 种产品的列表。我将如何将该列表发送到基本模板进行渲染?是否每个视图都需要将该数据发送到 render_to_response?我应该使用 template_tag 吗?你会怎么做?

【问题讨论】:

虽然我已经回答过了,但是之前有人问过这个问题:***.com/questions/1030249/…,***.com/questions/2223429/… 【参考方案1】:

您应该使用custom context processor。有了这个,你可以设置一个变量,例如top_products 将在您的所有模板中可用。

例如

# in project/app/context_processors.py
from app.models import Product

def top_products(request):
    return 'top_products': Products.objects.all() # of course some filter here

在你的settings.py

TEMPLATE_CONTEXT_PROCESSORS = (
    # maybe other here
    'app.context_processors.top_products',
)

在你的模板中:

% for product in top_products %
    ...

【讨论】:

我会试试看的。听起来就像我要找的一样。 只是一个余数。添加上下文处理器的过程在 Django 的更高版本中进行了更改。 OP的任务也可以根据这个问题的接受答案得到满足 - ***.com/questions/34902707/…

以上是关于如何将数据发送到 Django 中的基本模板?的主要内容,如果未能解决你的问题,请参考以下文章

将表格数据从模板发送到 django 中的 view.py

Django 2.0:将数据从视图发送到包含在另一个模板中的模板(2 个不同的应用程序)

Django如何将数据从视图发送到模板

将对象发送到Django中{%include%}标记中的子模板

将 Django 视图中的数据作为 JSON 对象传递给 vue 实例

如何将带有上下文变量的 Django 模板发送到 Ajax 调用?