Django - 模板层

 

直接将HTML硬编码到你的视图里却并不是一个好主意。 让我们来看一下为什么:

from django.shortcuts import render,HttpResponse
import datetime

def current_datetime(request):
    now = datetime.datetime.now()
    html = '<html><body>It is now %s</body></html>' % now

    return HttpResponse(html)
  • 对页面设计进行的任何改变都必须对 Python 代码进行相应的修改。 站点设计的修改往往比底层 Python 代码的修改要频繁得多,因此如果可以在不进行 Python 代码修改的情况下变更设计,那将会方便得多。

  • Python 代码编写和 HTML 设计是两项不同的工作,大多数专业的网站开发环境都将他们分配给不同的人员(甚至不同部门)来完成。 设计者和HTML/CSS的编码人员不应该被要求去编辑Python的代码来完成他们的工作。

  • 程序员编写 Python代码和设计人员制作模板两项工作同时进行的效率是最高的,远胜于让一个人等待另一个人完成对某个既包含 Python又包含 HTML 的文件的编辑工作。

基于这些原因,将页面的设计和Python的代码分离开会更干净简洁更容易维护。 我们可以使用 Django的 模板系统 (Template System)来实现这种模式

python的模板:HTML代码+模板语法

def current_time(req):
    # ================================原始的视图函数
    # import datetime
    # now=datetime.datetime.now()
    # html="<html><body>现在时刻:<h1>%s.</h1></body></html>" %now


    # ================================django模板修改的视图函数
    # from django.template import Template,Context
    # now=datetime.datetime.now()
    # t=Template('<html><body>现在时刻是:<h1>{{current_date}}</h1></body></html>')
    # #t=get_template('current_datetime.html')
    # c=Context({'current_date':str(now)})
    # html=t.render(c)
    #
    # return HttpResponse(html)


    #另一种写法(推荐)
    import datetime
    now=datetime.datetime.now()
    return render(req, 'current_datetime.html', {'current_date':str(now)[:19]})

一、模板语法 - 变量

模板语法
1.渲染变量{{ }}
1.深度查询 句点符
<p>{{ alex.age }}</p>
<p>{{ person_list.1.age }}</p>
2.过滤器
按照某种形式渲染出来
{{obj|filter__name:param}}
<p>{{ now|date:'Y-m-d' }}</p>
<p>{{ info.name|upper }}</p>

2.渲染标签{% %}

示例:

扫描二维码关注公众号,回复: 967480 查看本文章

二、模板 - 过滤器

三、模板 - 标签

四、模板 - 自定义标签和过滤器

五、模板 - 继承(extend)

猜你喜欢

转载自www.cnblogs.com/alice-bj/p/9067099.html