Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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 如何定义基本的通用代码块并将其插入Django中的其他模板中?_Python_Django_Templates_Generics - Fatal编程技术网

Python 如何定义基本的通用代码块并将其插入Django中的其他模板中?

Python 如何定义基本的通用代码块并将其插入Django中的其他模板中?,python,django,templates,generics,Python,Django,Templates,Generics,我想让我的HTML站点由单一的通用模块组成,有点像这个伪代码 {% block body %} // Just a block inside the base html template file <div class="container_main"> {% block generic_sub_menu %} // This should be replaced with a generic submenu, which is defined in anot

我想让我的HTML站点由单一的通用模块组成,有点像这个伪代码

{% block body %} // Just a block inside the base html template file
    <div class="container_main">
        {% block generic_sub_menu %} // This should be replaced with a generic submenu, which is defined in another html template file
        {% endblock %}

        Blah Blah Blah

        {% block generic_map_display %} // This should be replaced with a generic map display, which is defined in another html template file
        {% endblock %}
    </div>
{% endblock %}
{%block body%}//只是基本html模板文件中的一个块
{%block generic_sub_menu%}//应将其替换为在另一个html模板文件中定义的通用子菜单
{%endblock%}
废话连篇
{%block generic_map_display%}//这应该替换为generic map display,它在另一个html模板文件中定义
{%endblock%}
{%endblock%}
因此,我知道如何使用基础模板并插入更具体模板的主体,这扩展了基础模板。但是我如何制作一个模板,它可以在任何地方与一些通用HTML代码一起使用,这些代码不是扩展特定模板,而是可以被其他模板用于导入一些通用代码块


有没有一种方法可以通过块来实现这一点,或者我需要研究Django框架中的其他技术吗?

您可以将常见的html代码保存在静态文件夹中

如果您的settings.py具有以下行

STATIC_URL = '/static/'
你必须创建一个文件夹,将你的应用程序名作为名称,并在其中保存你的文件

在模板文件中,您必须调用

<script src="{% static "<appname>/<file name>" %}"></script>

假设您的项目templates/message\u display.html的模板目录中有一个文件,其中包含以下代码

    {% if messages %}
            {% for message in messages %}
                    <div>
                        <h5> {{ message }} </h5>
                    </div>
            {% endfor %}
    {% endif %}

如果你能举例说明你想要达到的目标,那就更好了。你的问题我不清楚。我真的没有任何例子,因为我不知道如何做到这一点。但是应该发生的是,应该用另一个html模板文件中的html代码替换整个body块中的两个block语句。我知道如何做,并且这实际上已经在base.html和index.html文件中发生(index.html扩展了base.html),但是我想做的是从一个文件导入代码,例如,generic.html应该包含用于特定用途的代码块。谢谢,这是我一直在寻找的行为。我知道,但你和karansthr有相同的解决方案,我只能标记一条注释作为答案,声誉低于15的情况下不可能进行向上投票。这就是我一直在寻找的方式。谢谢。但是,如果我有很多“模块”,那么就会有很多文件,这使得在项目增长时编辑和使用这些文件变得更加复杂。那么,有没有一种方法可以将文件压缩成一个或类似的文件呢?我不明白您到底在问什么,但很明显,您正在寻找管理Django项目的最佳方法。为此,我建议您搜索“django最佳实践”,如果可能,请阅读“两勺django”一书谢谢您的建议。我的意思是,如果我只使用include语句,我需要为我想要包含的每个代码块提供一个单独的文件,对吗?这意味着,如果我想要一个消息显示、地图显示、消息编写器、消息列表等等,我需要为它们中的每一个创建一个文件,但是如果我有很多,这会变得很混乱,所以我想知道你是否知道一个解决方案,其中一个文件包含所有代码,但是仍然可以只包含部分内容。您可以在模板目录(比如snippets)中为这些小代码块创建一个专用目录,然后稍后您可以使用{%include“snippets/message_display.html”%}或{%include“snippets/map_display.html”%}我认为这会更整洁。这就是我将要做的,当我在编辑器中打开它时可能仍然有点混乱,但这是我目前拥有的最好的选择。非常感谢。
    {% if messages %}
            {% for message in messages %}
                    <div>
                        <h5> {{ message }} </h5>
                    </div>
            {% endfor %}
    {% endif %}
    {% include "message_display.html" %}