Django中的templates(你的HTML页⾯放哪⾥)
本⽂回答Django⾥⾯的HTML⽂件应该怎么放,以及Django是如何查模板⽂件的。
到⽬前为⽌我们没有使⽤HTML页⾯,在之前的说明中所有内容都是写死在程序⾥的,如果你想改变内容就要修改代码。但是显然这不和逻辑,所以要将页⾯和数据分离,程序产⽣数据,页⾯么就是⽤来展⽰数据的,将来你想更换展⽰的样式那么也不需要修改程序,我们这⾥说的程序是Python代码。
html主页1. 创建你的HTML⽂件
我们来弄⼀个HTML页⾯来做主页,替代之前的hello world页⾯,毕竟有点丑,其实主页中的HTML写什么随便,我就从⽹上了⼀个Bootstrap模板来⽤。
1.1 存放你的html⽂件
有了主页⽂件那该放哪⾥呢?
先放这⾥吧
1.2 修改的URL配置
在views中添加⼀个⽅法,⽤于处理对于这个页⾯的请求。注意这⾥return的时候⽤来render,虽然HttpResponses可以返回HTML页⾯,但是当我们需要对模板进⾏填充的时候它就不⾏了,render函数的功能是载⼊模板,填充数据,然后⽣成HttpResponse对象,然后返回这个对象。
修改URL配置
验证⼀下,是不是好看多了
1.3 Django是怎么到这个HTML页⾯的
要回答这个问题我们还是需要看settings.py配置⽂件
BACKEND:就是Django⽤来渲染模板⽤的引擎,默认是Django⾃带的,我们也可以缓存Jinjia的引擎,这个⾄少⽬前我们还没⽤到。DIRS:Django会按顺序从这⾥的⽬录⾥去模板⽂件,记住是按照顺序啊。也就是说如果有2个同名的⽂件那么只会显⽰第⼀个到的。
其实这个TEMPLATES列表默认是空的,我们看到的这些信息都是开发⼯具给我们⽣成的,其实也就是通过django-admin建⽴项⽬时候产⽣的。
2. 所有的HTML都要放在默认⽣成的那个默认的templates⽬录⾥吗
毕竟每个APP都有⾃⼰的模板⽂件,都放在这⼀个⽬录⾥会不会⽐较乱?怎么才能便于管理呢?
2.1 ⽅法⼀
其实这个很好解决,你可以按照APP名称在默认的templates⽬录⾥建⽴⽬录,如下图:
现在我们就给mystie这个APP建⽴⼀个主页把。HTML代码如下:
在mysite的views.py⾥⾯添加处理函数
修改mystie⾥⾯的url配置,增加⼀个导⼊,建⽴⼀个URL匹配模式
测试访问
2.2 ⽅法⼆
在每⼀个APP⽬录⾥⾯建⽴⼀个templates⽬录(其实这个⽬录名没有要求),然后我们把建⽴的主页⽂件挪⾛,如下图:
mysite的URL配置⽂件不变
这时候你发现mysite⾥⾯的views.py⽂件有报错,不到了。
我们把前⾯的⽬录都删除,发现错误提⽰没有了
显⽰正常
这是为什么呢?它怎么知道去mystie这个APP的templates⽬录⾥呢?其实这个还是跟settings.py⽂件有关
APP_DIRS:它的作⽤就是让模板引擎去APP的⽬录⾥⾯的templates⽬录⾥模板⽂件,记住只能是templates⽬录。该选项默认是False,但是你看到的默认是True,这个也是因为通过django-admin建⽴项⽬是帮你设置的。
那如果我的APP⾥⾯的模板⽬录不叫templates呢?⽐如下⾯,我把⽬录名改了,views⾥⼜提⽰不到了。怎么办呢?
这时候就有⽤到settings.py⽂件了,增加⼀个⽬录就好了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论