templates介绍
什么是templates?
templates就是HTML文件
那它与传统的HTML有啥区别?
它使用了Django模板语言(Django Template language,DTL)
可以使用第三方模板(需要修改配置,在settings.py 中的TEMPLATES中的第一项:BACKEND就行)例如:jinja2
开发第一个templates
步骤:
在APP的根目录下创建名为templates的目录(必须叫这个名字,打错Django就找不到里面的静态文件)
在该目录下创建HTML文件
在views.py中返回render()
views.py的代码:
def indexhtml(request):
return render(request,'index.html')
然后配置url
url(r'^indexhtml/$',views.indexhtml),
可以运行了
上面的例子是最简单的,但通常render函数有三个参数
DTL初步使用:
render()函数中支持一个dict类型参数
该字典是后台传递到模板的参数,键为参数名
在模板证使用{{参数名}}来直接使用
render()函数有三个参数:
render(request,"要渲染的HTML文件",“传回前台模板的后台参数”)
eg:
在views.py文件中:
def indexhtml(request):
return render(request,'index.html',{'hello':'hello,blog!'})
在HTML中使用
<h1>{{hello}}</h1>
Templates使用有一个很大的问题!
再建一个APP 名为blog2,将blog中的templates完全复制到blog2下面,url地址配好,这是我们运行blog2就会发现一个问题,怎么运行显示的都是blog的内容,为什么会是这样啊?
Django查找Template
Django按照INSTALLED_APPS中添加顺序查找Templates
不同APP下的Templates目录中的同名.html文件会造成冲突
解决Templates冲突的方案
在APP 的templates目录下创建以APP名为名称的目录
将HTML文件放在创建的项目下
然后将views.py文件改为:
def indexhtml(request):
return render(request,'blog/index.html')
这样两个不同APP下相同的HTML名字也不会有冲突了。
网友评论