django入门与学习-django的模板文件-2

来源:互联网 发布:手机设计图纸软件 编辑:程序博客网 时间:2024/05/17 08:08

昨天成功的搭建了django开发环境并进行了测试,然而简单的输出‘Hello World’对程序开发并没有实质性的帮助。今天我们在昨天的基础上来讲一讲django的模板应用,进一步加深对django的学习与理解。

1.创建templates文件夹,使用模板生成xhtml文件。

博主在Ubuntu16.10下使用Bluefish这款编辑器,该软件有强大的模板和联想功能,和windows下的Editplus有的一拼。
在blog/文件夹下创建templates文件夹,注意单词末尾有’s’才能被django识别

》cd blog
》mkdir templates

之后我们使用bluefish的xhtml1.0模板在templates下生成index1.html,区别index.html。html代码如下:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />    <title>{{title}}</title></head><body><h1>hello {{user}}</h1></body></html>

生成完成之后,我们修改blog/下的views.py让它使用我们刚刚生成的index1.html。

from django.shortcuts import render_to_responsedef index(req):    return render_to_response('index1.html',{'title':'my page','user':'Franky'}

这里我们使用字典在django的模板中填充数据,在根目录调用

python3 manage.py runserver

运行后出现如下效果:
运行截图1

2.进阶1-使用对象填充模板

上面的操作弱爆了,传个字符和姓名在网页上并没有用,在这里我们尝试写个简单的对象,使用该对象填充模板。

  • 在blog/views.py里创建对象,使用该对象填充字典
 from django.shortcuts import render_to_responsedef index(req):    user = {'name':'hepeng','gender':'male','age':'23'}     return render_to_response('index1.html',{'title':'my page','user':user})
  • 在blog/templates/index1.html里设置对应的位置:
 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />    <title>{{title}}</title></head><body><h1>hello {{user.name}}</h1><h1>your sex is {{user.gender}}</h1><h1>your age is {{user.age}}</h1></body></html>
  • 运行结果如下图所示:
    运行截图2

3.进阶2-使用类生成对象填充字典

  • 修改后的blog/views.py代码如下
from django.shortcuts import render_to_responseclass Person(object):     def __init__(self,name,age,sex):         self.name = name         self.age = age         self.gender = sexdef index(req):    #user = {'name':'hepeng','gender':'male','age':'23'}        user = Person('Franky',23,'male')    return render_to_response('index1.html',{'title':'my page','user':user})
  • 运行结果和上图中的大致相同,只是name一行变成了Franky,此处不在截图。

4.进阶3-传递列表

话不多说,直接放码过来。

  • blog/views.py代码如下
from django.shortcuts import render_to_responselang_list = ['python','C++','java','go','c#']def index(req):    return render_to_response('index1.html',{'title':'my page','list':lang_list}


- blog/templates/index1.html代码如下

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />    <title>{{title}}</title></head><body><li>{{list.0}}</li><li>{{list.1}}</li><li>{{list.2}}</li><li>{{list.3}}</li><li>{{list.4}}</li></body></html>
  • 运行效果如下如所示:

运行截图3

5.进阶4.调用传递对象的方法

我们传入一个user对象,调用user对象中的say方法完成输出。参考代码如下:

from django.shortcuts import render_to_responseclass Person(object):    def __init__(self,name):        self.name = name    def say(self):        return 'I\'am '+ self.namedef index(req):    user = Person('hepeng')    return render_to_response('index1.html',{'title':'my page','user':user})    
<body><h1>{{user.say}}</h1></body>

程序比较简单,运行结果就不在这里截图了。

1 0
原创粉丝点击