django——入门2

开发第一个Templates

一、第二种URL配置(优化URL配置)

​ 1> 在根urls.py 中引入include;

django——入门2

​ 2> 在APP目录下创建urls.py文件,格式与根urls.py相同;

​ 3> 根urls.py中url函数第二个参数改为 include(‘blog.urls’);

django——入门2
django——入门2

django——入门2

注意事项:

​ 根urls.py针对APP配置的URL名称,是该APP所有URL的总路径;

​ 配置URL时注意正则表达式结尾符号$和/;

错误:

​ 1> 忘记在根的urls.py中设置的地址

django——入门2

应该有两个index 总路径(1)和子路径(2):

django——入门2

django——入门2

django——入门2

​ 解决方法:修改blog下面的url

django——入门2

django——入门2

django——入门2

​ 2> 在url后面输入其他字符串,网页依然会被显示出来;

django——入门2

​ 解决方法:正则表达式

django——入门2

​ 不管后面加什么字符串都是404错误;

django——入门2

​ 只有后面是空字符串时才正常显示;

django——入门2

​ 3> 正则表达式忘记加 “/”;

django——入门2
django——入门2

​ 解决方法:格式为 “^字符串/$”

django——入门2

django——入门2

二、Templatesjies介绍

什么是Templates

​ HTML文件;

​ 使用了django模板语言(django Template Language, DTL)

​ 可以使用第三方模板(如Jinjaa2)

django——入门2

步骤:

​ 1> 在APP(blog应用)的根目录下创建名叫 Templates的目录;

django——入门2
​ 2> 在该目录(templates)下创建HTML文件;

django——入门2
​ 3> 在views.py中返回render()(翻译成中文叫渲染)

​ 通过render()把HTML文件响应给浏览器;

django——入门2

刷新页面,成功时:

django——入门2

错误:

django——入门2

解决方法:templates或者HTML建错了,改好之后再运行一下python manage.py runserver

​ 其他错误情况与解决办法(尚未验证):

django——入门2

DTL初步使用:

​ rander()函数中支持一个dict类型参数;

​ 该字典是后台传递到模板的参数,键为参数名;

​ 在模板中使用{{参数名}}来直接使用;

django——入门2

django——入门2

​ 刷新页面后:

django——入门2

注意点

​ 1> 首先需要在建一个应用(APP)blog2;

django——入门2

​ 2> 把blog2添加到INSTALLED_APPS 里:

django——入门2
3> 把blog里的templates连同index.html复制到blog2中;

django——入门2

4> 把blog里的urls.py也复制过去;

django——入门2
5> 把blog里的index里改为"Hello Blog!",blog2里面的index改为"hello blog2!"便于区分;

django——入门2
django——入门2

6> 把blog里views里的render()里的第三个参数去掉,并复制到blog2里的views里面;

django——入门2

django——入门2

7> 在根目录(myblog)urls.py里的添加blog2的url;

django——入门2

错误:PEP 8: blank line at end of file

django——入门2

django——入门2

解决方案:在后面添加机构空白行即可

django——入门2

8> 启动服务器

发现blog和blog2显示的搜索blog的页面,django把这两个页面的index搞混了;

django——入门2

django——入门2

9> 原因:

django查找Templates

​ django安照INSTALLED_APPS中的添加顺序查找Templates;(如果不同应用下的Templates(目标html文件)名字相同时就会照成冲突)

​ 不同APP下的Templates目录中的同名.html文件会照成冲突;

10> 解决Templates冲突的方案

​ 在APP的Templates目录下创建以APP为名称的目录;

​ 将html文件放入新创建的目录下;

django——入门2

11> 注意还要改一下两个应用里面的views

django——入门2

django——入门2

12> 最终的效果:
django——入门2

django——入门2