【发布时间】:2019-11-29 00:19:41
【问题描述】:
我正在构建一个项目,其中我的 views.py 中有几个视图,我想将它们组合成仪表板格式(并排 4 个视图)。它们足够复杂,因为每个视图都包含许多变量并且有很多逻辑服务器端,我也打算单独在其他地方使用它们。
我的问题是如果我想创建仪表板视图(即我有一个带有标题的基本模板),将views.py 中的单独视图组合成单个视图的最佳方法是什么 /footer,然后在该基础中嵌入 4 个视图)。
我的概念证明是使用正确的变量调用视图并解码呈现的返回,然后将其作为变量传递给模板,最后将其作为安全代码插入。见下文。我的直觉告诉我这是一种糟糕的做法,但我不确定包含/扩展系统是否适合这种用途。
views.py
def view1(request, r1_level, r2_level, d_level, call_code):
...
return render(request,
'modules/logic/levels/' + call_code + '.html',
{
'indicators': indicators,
'd_level': d_level,
'prof': prof,
'a_flag': a_flag
}
)
def dashboard(request, level_code):
view1 = view1(request, r1_level, r2_level, d_level, call_code).content.decode("utf-8")
...
return render(request,
'dashboard.html',
{
'view1': view1,
...
}
)
dashboard.html
<div id="site-wrapper" class="content">
<div class='grid-container'>
<div class="grid-x grid-margin-x">
<div class="cell small-12 medium-6 large-8">
...
</div>
<div class="cell small-12 medium-6 large-4">
{{ view1 | safe }}
</div>
</div>
</div>
</div>
感谢您阅读这个烂摊子!
【问题讨论】: