4.1优化url:
如果系统庞大,之前的的url配置方法将会十分冗杂,难以修改维护,因此可以采用另一种配置方法。
1)步骤:
django 版本>=2.0时,默认的url方法的支持变成了path方法,二者用法相近,隶属包不同。
在自己的app根目录中添加新的urls.py
由于urls内容相似,可以将之前的urls代码复制到这里,做下微调即可:
这时,使用浏览器访问返回hello,world的地址变成了
http://localhost:8000/index/index/
两个index分别是myblog.urls里面的根目录以及blog.urls里的子目录,但是这样会显得有点扯,连续两个index,我们可以通过修改两个urls文件来改善,通常情况下更多的回去修改app目录的url:
同时为了方便区分,将blog在myblog里的urls改成blog/:
这样地址就变成了
http://localhost:8000/blog
但是由于我们将子目录中的urls的正则表达式设置为空,所以我们在blog后无论输入什么结果都是返回hello,world的网页
所以我们可以利用空串“^$”来匹配空串(正则表达式可以自行学习)
4.2 Templates
template其实是一个个html文件,特点是使用了Django模板语言(Django Template Language,DTL)
也可以使用第三方模板(如jinja2):
修改settings.py 中的BACKEND即可:
现阶段网页比较简单,可以只使用Django就可以完成。
步骤:
①在APP根目录中创建一个名为Templates的目录,并在该目录下创建HTML文件
②在view.py中返回一个render()
散运行浏览器访问
http://localhost:8000/blog
就可以得到index.html的运行效果了。
DTL初步使用:
render()函数中支持一个dict类型参数,该字典是后台传递到模板的参数,键为参数名:
在模板中使用{{参数名}}来直接使用:
4.3 Template遇到的问题
新建blog2
在settings中添加
将blog目录下的templates文件以及urls.py,view.py(去掉键值对后)复制到blog2目录下。将blog.templates中index.html中的{{hello}}改为Hello, Blog
将blog2.templates中index.html中的{{hello}}改为Hello, Blog2,在myblog根目录下的urls.py中添加
运行浏览器访问
http://localhost:8000/blog
得到:
此时运行
http://localhost:8000/blog2
却发现仍为
原因:
Django按照INSTALLED_APPS的添加顺序查找Templates,不同APP下的Templates目录中的同名.html文件会造成冲突。
解决方案:
在APP的Templates目录下创建以APP名为名称的目录,将html文件放入到新创建目录下,并修改两个view.py文件即可