Python 使用include标记插入.html的嵌套Django视图
我想知道是否有人对在Django中的视图中渲染视图有任何最佳实践建议,或者具有类似效果的东西,其中两个视图都可以有自己的上下文和方法 我目前正在使用内置的include标记呈现下拉列表。因此,nested.html使用与页面其余部分相同的Django视图。所有上下文都来自主视图,如下所示。我想给这个下拉列表提供它自己的Django视图,以便在打开下拉列表时只执行某些数据库查询和其他计算Python 使用include标记插入.html的嵌套Django视图,python,django,view,nested,Python,Django,View,Nested,我想知道是否有人对在Django中的视图中渲染视图有任何最佳实践建议,或者具有类似效果的东西,其中两个视图都可以有自己的上下文和方法 我目前正在使用内置的include标记呈现下拉列表。因此,nested.html使用与页面其余部分相同的Django视图。所有上下文都来自主视图,如下所示。我想给这个下拉列表提供它自己的Django视图,以便在打开下拉列表时只执行某些数据库查询和其他计算 <div class="container-fluid"> <div class="ro
<div class="container-fluid">
<div class="row">
<div class="col-6">
</div>
<div class="col-2 d-flex justify-content-center">
{% include nested.html %}
</div> ...
{%include nested.html%}
...
如果在这方面有经验的人能让我知道他们的想法,如果尝试将其分成两个视图是有意义的,那就太好了
总之。我想知道我是否可以使用类似于includedjango标记的东西以某种方式呈现一个单独的视图。因此,我可以控制视图的渲染位置。下面我概述了我的解决方案的实现,使用自定义包含标记,如对我的问题的评论中所建议的 可以在项目目录中创建自定义模板标记文件,然后在模板库中注册这些文件。e、 g:
template_tags.py
from django import template
from users.models import Organisation
register = template.Library()
@register.inclusion_tag('nested.html', takes_context=True)
def nested_template(context, param=None): #param to pass variables from main view
context.update({
'data_list': get_data_list(param)
'organisation_id': param,
})
return context
def get_data_list(self,param):
data_list = ... #do all queries needed.
return data_list
在模板标记中,您指向嵌套的.html,它可以执行您需要它执行的任何操作。例如:
nested.html
{% for data in data_list %}
<h4> {{data}} </h4>
{% endfor %}
希望足够清楚,可以帮助别人你能提供一些代码吗,因为我不明白你想要什么:)我不会发布实际的代码,因为它很长,而且问题更具推测性。相反,我将给出一些示例代码,并尝试更详细地指出我想要做什么。您需要一个自定义包含标记。@DanielRoseman谢谢,这就是我要找的。如果你提交答案,我会接受。
{% load nested_template %} #at the top or anywhere before using it
{% nested_template param %} #where you want the template included