标签:extend 9.png 简洁 ons tag lock src fir name
直接将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.深度查询 句点符
语法:{{var_name}}
<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.渲染标签{% %}
语法:{% tag %}
...
示例:
views.py
from django.shortcuts import render,HttpResponse def index(request): #============================模板语法之变量=================================== import datetime s = ‘hello‘ li = [111,222,333] dic = {‘name‘:‘alce‘,‘age‘:22} date = datetime.date(2018,5,21) class Person(object): def __init__(self,name): self.name = name person_yuan = Person(‘yuan‘) person_alex = Person(‘alex‘) person_egon = Person(‘egon‘) person_list = [person_yuan,person_alex,person_egon] # return render(request,‘index.html‘,{‘s‘:s}) # 所有得变量都会传到模板中 return render(request,‘index.html‘,locals())
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>index</title> </head> <body> <h3>模板语法之变量</h3> <p>{{ s }}</p> <p>{{ li }}</p> <p>{{ li.1 }}</p> <p>{{ dic }}</p> <p>{{ dic.name }}</p> <p>{{ date }}</p> <p>{{ date.year }}</p> <p>{{ person_alex }}</p> <p>{{ person_alex.name }}</p> <p>{{ person_list }}</p> <p>{{ person_list.1.name }}</p> <p>{{ person_list.1.name.upper }}</p> # 句点符也可以用来引用对象的方法(无参数方法): </body> </html>
标签:extend 9.png 简洁 ons tag lock src fir name
原文地址:https://www.cnblogs.com/alice-bj/p/9067099.html