具有动态模板的单一视图

时间:2018-11-02 17:46:02

标签: python django django-templates django-views

我有一些模块,如果启用/禁用这些模块,则它们需要在前端网页上以不同的方式排列表格和iframe。为此,我设置了一个功能来检查启用/禁用了哪些模块,并为每个“集合”分配了一个编号,并将为每个“ set1.html”,“ set2.html”,“ set3”创建单独的模板。 html”,等等...

我想利用一个单一的视图,在该视图中我可以从我创建的函数中传递设置编号,但是我似乎不知道该怎么做。

def homeset(request):
   return render(request, 'app/set1.html', {})

希望找出某种方式使我创建的函数返回“ 1”,以确定要加载哪个set#作为模板,并且不希望不必为每个所需的模板创建视图。

2 个答案:

答案 0 :(得分:1)

仅此而已,您在渲染之前设置模板名称是否有问题?

def homeset(request):
    # define 'my_set'
    # define num
    ...
    my_template_name = None         
    if num in my_set:
        my_template_name = 'app/set{}.html'.format(num)
    return render(request, my_template_name)

答案 1 :(得分:1)

看起来像斯科特·斯基尔斯(Scott Skiles)回答了您的问题,但另一种方法是使用单个基本模板和"include" templatetag

您可以将设置号码传递给模板,并使用“ if” templatetag”为每个设置号码包括来自适当模板的内容。

{% if set_num == 1 %}
    {% include "foo/bar.html" %}
{% elif set_num == 2 %}
    {% include "foo/two.html" %}
{% endif %}