Django_第一个template

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中使用

{{hello}}




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名字也不会有冲突了。

你可能感兴趣的:(Django_第一个template)