美文网首页
Django_第一个template

Django_第一个template

作者: be_keeper | 来源:发表于2018-03-14 10:17 被阅读0次

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

    相关文章

      网友评论

          本文标题:Django_第一个template

          本文链接:https://www.haomeiwen.com/subject/cbazfftx.html