zoukankan      html  css  js  c++  java
  • Django测试开发-20-settings.py中templates配置,使得APP下的模板以及根目录下的模板均可生效

    一个python项目下面可以建立多个APP,每个APP里面都可以建立templates目录用于存放模板文件,而且APP外面还有一个公用模板存放的目录templates。

    一、公共模板下的templates

    
    
    TEMPLATES = [
    {
    'BACKEND': 'django.template.backends.django.DjangoTemplates', # 定义模板引擎
    # 'DIRS': [BASE_DIR + '/apps/my_app/templates'],
    # 'DIRS': [BASE_DIR + '/apps/vote/templates'],
    'DIRS': [os.path.join(BASE_DIR, 'apps/develop/templates')],
    #'DIRS': ['frontend/dist'], # 设置模板所在路径
    'APP_DIRS': True, # 是否在APP里查找模板文件
    'OPTIONS': {
    'context_processors': [
    'django.template.context_processors.debug',
    'django.template.context_processors.request',
    'django.contrib.auth.context_processors.auth',
    'django.contrib.messages.context_processors.messages',
    ],
    },
    },
    ]
    'DIRS': [BASE_DIR + '/templates']为存放目录templates下面存放的是公用模板,此设置为APP下所有模板和公共模板共享共用

    原因:

    每个APP里面创建的templates目录下,存放该APP专用的模板,不需要在settings.py配置文件中明确指定APP下的模板目录。因为settings.py配置文件设置了DjangoTemplates后,并将APP_DIRS设置成了True;在DjangoTemplates模块中明确指出了app_dirname = 'templates';这将会让DjangoTemplates在每个INSTALLED_APPS文件夹中寻找 "templates" 子目录。

    class DjangoTemplates(BaseEngine):
    
        app_dirname = 'templates'
    
        def __init__(self, params):
            params = params.copy()
            options = params.pop('OPTIONS').copy()
            options.setdefault('autoescape', True)
            options.setdefault('debug', settings.DEBUG)
            options.setdefault('file_charset', settings.FILE_CHARSET)
            libraries = options.get('libraries', {})
            options['libraries'] = self.get_templatetag_libraries(libraries)
            super().__init__(params)
            self.engine = Engine(self.dirs, self.app_dirs, **options)

     二、公用模板和APP内专用模板的加载顺序。

    当APP内的view.py要渲染一个模板时,先根据模板名称去公用模板中查找,如果找到则完成渲染;

    如果找不到则再去当前APP下的templates目录中查找;

    即先公用,再专用。

  • 相关阅读:
    关于打开MTK_SDCARD_SWAP 宏后MTK目前升级方案和 关于打开MTK_SHARED_SDCARD宏后MTK目前升级方案
    报表填报时,如何实现多个单元格绑定一个字段?
    双4G LTE
    报表移动端如何进行移动设备绑定与撤销
    各种卡的一些信息积累
    广佛肇城轨年内通车 佛山西站预计2017年中通车
    Web报表页面如何传递中文参数
    根据条件控制参数控件是否显示(可用)
    如何对报表的参数控件赋值
    Jquery前端分页插件pagination同步加载和异步加载
  • 原文地址:https://www.cnblogs.com/chushujin/p/12573119.html
Copyright © 2011-2022 走看看