从 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 %}
我有一个包含一些原始查询的视图,我需要在多个 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 %}