【发布时间】:2018-10-12 16:39:40
【问题描述】:
我已经从https://docs.djangoproject.com/en/2.1/intro/tutorial01/的教程开始构建一个django项目
在完成基础教程(该教程使用一个名为“民意调查”的应用程序创建项目)后,我想构建一种可以将许多应用程序放在一起的主页。出于这个原因,我构建了一个名为“news”的应用程序,现在我正在寻找将这两个应用程序组合在一起的方法。
到目前为止,我在名为“news/base.html”的主“新闻”模板中执行此操作,并且在代码中包含了不同的应用程序。
这是我的“news/base.html”文件:
{% include 'news/index.html' %}
{% include polls_template %}
{% include 'news/footer.html' %}
'news/index.html' 和 'news/footer.html' 这两个模板只是没有参数的 html 页面,仅用于测试,它们工作正常。
polls_template 变量是我在 news.views.base 函数中创建并在上下文中传递给模板的模板变量。
这是执行此操作的视图 sn-p:
def base(request):
t = loader.get_template('polls/index.html')
return render(request, 'news/base.html', {'polls_template': t})
模板显示得很好,但由于没有参数,它显示一个空投票。现在我的问题是我找不到将上下文变量传递给此模板对象以填充其字段的方法。
我试图做类似的事情:
{% include polls_template with context=polls_context %}
但它不起作用。
理想情况下,我希望有一种方法可以在视图中完成所有这些操作,因为这样我就可以单独构建应用程序,然后只需使用一个视图将它们全部收集起来并将它们传递给模板。提前感谢您的帮助!
【问题讨论】:
-
您包含的任何模板都会获得与您包含它的模板相同的上下文变量。因此,如果您的视图添加了 polls_template 所需的上下文变量,那么它们将在您渲染它们时显示出来。一世。 e.在你看来:
render(request, 'news/base.html', {'polls_template': t, 'poll': Poll.objects.first()}会给你一个poll对象,你可以在模板中渲染。
标签: django