Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用include标记插入.html的嵌套Django视图_Python_Django_View_Nested - Fatal编程技术网

Python 使用include标记插入.html的嵌套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

我想知道是否有人对在Django中的视图中渲染视图有任何最佳实践建议,或者具有类似效果的东西,其中两个视图都可以有自己的上下文和方法

我目前正在使用内置的include标记呈现下拉列表。因此,nested.html使用与页面其余部分相同的Django视图。所有上下文都来自主视图,如下所示。我想给这个下拉列表提供它自己的Django视图,以便在打开下拉列表时只执行某些数据库查询和其他计算

<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