Django简单应用之4 Template

←转到第三章
✈回到首页


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文件即可
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


✈回到首页                                                                                                                                      转到第五章→

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值