模版装载机

作者: 大爷的二舅 | 来源:发表于2018-02-06 13:56 被阅读5次
    内部模板加载

    通常,您将模板存储在文件系统的文件中,而不是自己使用低级别的模板API。 将模板保存在指定为模板目录的目录中。 Django根据您的模板加载设置(请参阅下面的“加载器类型”)在许多位置搜索模板目录,但指定模板目录最基本的方法是使用DIRS选项。

    DIRS选项

    通过使用设置文件的TEMPLATES设置中的DIRS选项或者Engine的dirs参数来告诉Django你的模板目录是什么。 这应该被设置为包含模板目录完整路径的字符串列表:

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [
                '/home/html/templates/lawrence.com',
                '/home/html/templates/default',
            ],
        },
    ]
    

    只要目录和模板可以被Web服务器读取,你的模板就可以到达任何你想要的地方。 他们可以有任何你想要的扩展名,如.html或.txt,或者根本没有扩展名。 请注意,即使在Windows上,这些路径也应该使用Unix风格的正斜杠。

    加载程序类型

    默认情况下,Django使用基于文件系统的模板加载器,但是Django提供了一些其他模板加载器,它们知道如何从其他来源加载模板; 其中最常用的应用程序加载器如下所述。

    文件系统加载器

    filesystem.Loader根据DIRS <TEMPLATES-DIRS>加载文件系统中的模板。 这个加载器默认是启用的。 但是,在将DIRS <TEMPLATES-DIRS>设置为非空列表之前,它不会找到任何模板:

    TEMPLATES = [{
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
    }]
    
    应用目录加载器

    app_directories.Loader从文件系统上的Django应用程序加载模板。 对于INSTALLED_APPS中的每个应用程序,加载器查找模板子目录。 如果该目录存在,Django将在其中查找模板。 这意味着您可以使用您的个人应用程序存储模板。 这也使得使用默认模板来分发Django应用程序变得很容易。 例如,对于这个设置:

    INSTALLED_APPS = ['myproject.reviews', 'myproject.music']
    

    get_template('foo.html')将按以下顺序在这些目录中查找foo.html:

    • /path/to/myproject/reviews/templates/
    • /path/to/myproject/music/templates/

    并将使用它找到的第一个。

    INSTALLED_APPS的顺序非常重要!

    例如,如果您要自定义Django管理员,可以选择使用myproject.reviews中的admin / base_site.html覆盖来自django.contrib.admin的标准admin / base_site.html模板。

    然后你必须确保你的myproject.reviews在INSTALLED_APPS中的django.contrib.admin之前,否则django.contrib.admin将被加载,你的将被忽略。

    请注意,加载器在第一次运行时执行优化:它缓存一个INSTALLED_APPS包具有模板子目录的列表。

    您可以通过将APP_DIRS设置为True来启用该加载器:

    TEMPLATES = [{
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'APP_DIRS': True,
    }]
    
    其他装载机

    其余的模板加载器是:

    • django.template.loaders.eggs.Loader
    • django.template.loaders.cached.Loader
    • django.template.loaders.locmem.Loader

    这些加载器在默认情况下是禁用的,但是可以通过在“模板”设置中将“加载器”选项添加到DjangoTemplates后端或将加载器参数传递给引擎来激活它们。 有关这些高级装载机的详细信息,以及构建您自己的自定义装载机,可以在Django Project网站上找到。

    相关文章

      网友评论

        本文标题:模版装载机

        本文链接:https://www.haomeiwen.com/subject/yodgzxtx.html