图1 测试的时候如果出现以上错误“TemplateDoesNotExist at /t1/”
这个是因为默认情况下,Django会在每个应用的根目录下查找名为"templates"的文件夹
在Django中,
也可以使用自定义的模板文件夹名字,但是需要在项目中重新设置settings.py
中模板的配置。settings.py中 找到TEMPLATES
设置中,可以根据需要设置应用app的模板文件夹的名称和路径。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
# 其他模板文件夹路径...
os.path.join(BASE_DIR, 'yourapp/views'),
],
# 其他设置...
},
]
上述配置中,os.path.join(BASE_DIR, 'yourapp/template文件夹名字')
指定了应用下模板文件夹的路径
具体操作如下:
假设,某个项目d2 项目下有app应用(my1),在app 应用my1目录下建立了两个模板文件夹: templates,templates1,如图1中的①②
图2
需要在 项目的settings.py 中修改环境,找到 图③中的模板设置位置:TEMPLATES=
按照一中介绍的格式进行添加两个目录:
图3
在Django应用的根目录下,可以创建多个模板文件夹来组织和管理模板文件。这样做可以更好地分类和区分不同类型或功能的模板。
这样在应用的根目录下创建任意数量的模板文件夹,可以根据自己的需求和项目的组织结构来命名和划分这些文件夹。例如,我们可以创建一个名为"templates"的主文件夹,并在其中创建多个子文件夹,每个子文件夹用于存放特定类型的模板。
以下是一个示例:
app/
├── templates/
│ ├── base.html
│ ├── partials/
│ │ ├── header.html
│ │ └── footer.html
│ ├── auth/
│ │ ├── login.html
│ │ ├── register.html
│ │ └── reset_password.html
│ └── blog/
│ ├── post_list.html
│ ├── post_detail.html
│ └── post_create.html
├── models.py
├── views.py
└── ...
在上面的示例中,你可以看到在"templates"文件夹下创建了三个子文件夹:“partials”、“auth"和"blog”,每个子文件夹都用于存放特定类型的模板文件。这样的组织结构可以更好地管理和定位模板文件。
要使用这样的自定义结构需要在settings.py中提供正确的路径。
在Django的设置文件(通常是settings.py
)中,你需要对TEMPLATES
设置进行适当的配置,以指定多个模板文件夹的位置。
按照刚才的扩展方式,对应的settings.py 中,要如何进行设置呢,在TEMPLATES
设置中配置多个模板文件夹:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, 'yourapp/templates'),
os.path.join(BASE_DIR, 'yourapp/templates/partials'),
os.path.join(BASE_DIR, 'yourapp/templates/auth'),
os.path.join(BASE_DIR, 'yourapp/templates/blog'),
# 其他模板文件夹路径...
],
# 其他设置...
},
]
在上述示例中,DIRS
列表包含了多个模板文件夹的路径。
需要确保在每个路径中使用os.path.join(BASE_DIR, ...)
来构建完整的文件夹路径,其中BASE_DIR
是Django项目的根目录。
一旦你在settings.py
中完成了这样的配置,Django在查找和加载模板文件时将会搜索这些指定的模板文件夹。
请注意,当在视图函数或模板中引用模板文件时,只需提供相对于这些模板文件夹的路径。例如,如果要引用"blog/post_list.html"模板,可以直接使用'blog/post_list.html'
作为模板名称。
这样,就可以在settings.py
中配置多个模板文件夹的位置,以便Django能够正确地查找和加载模板文件。
例如,在视图函数中返回一个模板时,可以使用相对路径指定模板的位置,如return render(request, 'blog/post_list.html')
。
比如二中的例子,我们可以在settings.py中设置好后直接使用相对地址,如图2–》可改为图3代码形式。