专题4:Django之在应用下创建模版templates及注意事项

在应用文件夹内,我们也可以配置模版(即:templates文件夹),如下图:

专题4:Django之在应用下创建模版templates及注意事项_第1张图片

注意:此时外层也有templates

步骤如下:

1. 在应用下(news下)手动创建templates文件夹,如下图:

专题4:Django之在应用下创建模版templates及注意事项_第2张图片

2.  在settings.py(<项目名>/<项目名>/settings.py)中开启应用模版功能(把APP_DIRS设为True)即可

专题4:Django之在应用下创建模版templates及注意事项_第3张图片

 注意:当应用下templates和外层templates同时存在时,如下图:

专题4:Django之在应用下创建模版templates及注意事项_第4张图片

此时:Django的模版查找规则是

1. 优先查找外层templates目录下的HTML

2.  如果外层templates目录下没有对应HTML,则按照settings.py中INSTALLED_APPS配置下的应用顺序,逐层查找。

专题4:Django之在应用下创建模版templates及注意事项_第5张图片

验证:

1. 分别在news应用下的templates目录和外层应用的templates目录中创建index.html,并在news/views.py中return render(request, 'index.html'),如下图所示:

专题4:Django之在应用下创建模版templates及注意事项_第6张图片

专题4:Django之在应用下创建模版templates及注意事项_第7张图片

在浏览器中输入:https://127.0.0.1:8000/news/index/ 发现显示的HTML是外层的HTML文件,说明Django确实是优先查找外层templates目录下的HTML专题4:Django之在应用下创建模版templates及注意事项_第8张图片

2. 删掉外层目录的templates目录下的index.py,并在music应用下创建templates/index.py,如下图:

专题4:Django之在应用下创建模版templates及注意事项_第9张图片

在浏览器中输入: https://127.0.0.1:8000/news/index/,发现显示的是music应用下的templates/index.html

专题4:Django之在应用下创建模版templates及注意事项_第10张图片

由此说明,当外层templates目录下没有对应HTML时,则按照settings.py中INSTALLED_APPS配置下的应用顺序,逐层查找,即:

专题4:Django之在应用下创建模版templates及注意事项_第11张图片

 那么问题来了,Django虽然是这样设计的,可是这样的查找方式不是我想要的呀!!!我们当然不希望我们当前的应用引入了其他应用的模版,那么如何避免这一问题呢???

步骤1:

在当前应用的templates目录下再创建一个与该应用同名的文件夹,并把我们要用的HTML文件放到这个同名文件夹中,如下图:

专题4:Django之在应用下创建模版templates及注意事项_第12张图片

步骤2:

打开应用下的views.py,做如下更改:

专题4:Django之在应用下创建模版templates及注意事项_第13张图片 按照上图的写法,Django先查找看外层templates有没有news/index.html,但外层templates没有news文件夹,所以就按照INATALLED_APPS列表逐层查找,最终在news应用目录下的templates中找到了news文件夹,进而找到了index.py

验证:

在浏览器中输入:https://127.0.0.1:8000/news/index/ 结果如下:

专题4:Django之在应用下创建模版templates及注意事项_第14张图片

你可能感兴趣的:(Django,django,python,后端)