从 Django 中的一个视图呈现多个模板

More than one template render from one view in Django

我有一个包含一些原始查询的视图,我需要在多个 html 页面(模板)上使用这些查询。如何将视图的上下文呈现给两个模板? -- 我知道最好对这个视图使用通用视图,但现在不重要了。 --

views.py

def results(request,user_name_id):

    # VEZETŐI TESZT
    vezetoi_hatekonysag = Vezetoi.objects.raw(...)
    vezetoi_iranyito = Vezetoi.objects.raw(...)
    vezetoi_motivalo = Vezetoi.objects.raw(...)
    vezetoi_tamogato = Vezetoi.objects.raw(...)
    vezetoi_delegalo = Vezetoi.objects.raw(...)

    # VISELKEDÉSTÍPUS TESZT
    viselkedes_iranyito = Vezetoi.objects.raw(...)
    viselkedes_inspiralo = Vezetoi.objects.raw(...)
    viselkedes_tamogato = Vezetoi.objects.raw('...)
    viselkedes_elemzo = Vezetoi.objects.raw(...)


context = {
    # VEZETŐIKOMPETENCIA ÉS HATÉKNYSÁG
    'vezetoi_hatekonysag': vezetoi_hatekonysag,
    'vezetoi_iranyito': vezetoi_iranyito,
    'vezetoi_motivalo': vezetoi_motivalo,
    'vezetoi_tamogato': vezetoi_tamogato,
    'vezetoi_delegalo': vezetoi_delegalo,

    # VISELKEDÉSTÍPUS
    'viselkedes_iranyito': viselkedes_iranyito,
    'viselkedes_inspiralo': viselkedes_inspiralo,
    'viselkedes_tamogato': viselkedes_tamogato,
    'viselkedes_elemzo': viselkedes_elemzo,
}

return render(request, 'stressz/all_user.html', context)

一个视图只能return一个响应(一页)并且不能使用多个html模板。

如果您想对不同的查询使用不同的模板(动态确定模板)。 :

def your_view(request, user_name_id):
  # ...do queries...
  if SOME_LOGIC: 
    template_name = 'path/to/template1.html'
  else: 
    template_name = 'path/to/template2.html'
  return render(request, template_name, context)

如果您只需要模板中的一部分内容有所不同,一种选择是将模板添加到 context 并将其包含在 html 文件中,例如 context['my_list'] = 'path/to/girl_list.html'context['my_list'] = path/to/boy_list.html

template.html:

{% block someblock %}
...
  {% include my_list %}
...
{% endlbock %}