Django Web开发学习笔记(4)

时间:2014-07-07 20:34:45   收藏:0   阅读:291

第四章 模板篇

上一章的内容,我们将HTML的代码和Python代码都混合在了在view.py的文件下。但是这样做的坏处无疑是明显的,引用DjangoBook的说法:

这一章我们采用Template的方法来尽量将两部分代码进行分离。


一、引入模板模块

在view.py中导入模块

from django.template import Template,Context

其中,Template模块是负责HTML的模板操作,Context是负责前端界面的显示任务。

二、创建模板

1.<html>
2.<body>
3.{% ifequal passport ‘ywc‘%}
4.name:{{userName}},passport:{{passport}}
5.{% else %}
I6.input Error,please try it again......
7.</body>
8.</html>
9.{% endifequal %}

其中需要明白两个新引入的变量的概念

{% %}称为模板标签,下面我们将会列举出开发中使用的大部分标签,功能类似于JSP中的标签,我们甚至可以创建自己的标签。

{{   }}称为模板变量,我们在JSP开发中使用的是${}来获取从Servlet传递过来的数据,用于在前端展示

上面的代码的是判断passport是否等于‘ywc‘ 如果相等的话就会把用户名和密码都显示在界面上,如果不等的话则会提示“input error......”的字符串。

我们在view.py中定义这样一个函数:

def template_20140627(request):
    h = """
    <html>
        <body>
        {% ifequal passport ‘123‘%}
            name:{{userName}},passport:{{passport}}
        {% else %}
            Input Error,please try it again......
        </body>
    </html>
        {% endifequal %}"""
    t = Template(h);
    c = Context({‘userName‘:‘ywc‘,‘passport‘:‘123‘})
    html = t.render(c);
    return HttpResponse(html)

如上,我们将完成了在视图端的基本操作。用户的姓名为‘ywc‘,密码为123.判断用户密码如果为123的话就输出用户名和用户密码,否则的话输出错误提示!

 三、添加映射路径

在urls.py中添加如下:

 (r‘^tt/$‘, DjangoE_1.view.template_20140627)

在浏览器中输入访问地址http://localhost:8000/tt/就能看到我们的结果。

 


 

经过上面的操作,我们发现HTML代码依然被嵌入在view.py中,并没有实现分离的效果。其实,我们发现,最终显示在网页上的是response返回的字符串,因此,我们可以直接将模板单独放在一个文件夹下面,通过打开文件来获取该模板。我们在工程目录下新建一个名为template的文件夹。并将前面定义的模板teml.html放在该文件夹下面.

1、定义模板

<html>
    <body>
    {% ifequal passport ‘123‘%}
        name:{{userName}},passport:{{passport}}
    {% else %}
        Input Error,please try it again......
    </body>
</html>
    {% endifequal %}

2、在view.py 中定义函数

def template_20140628(request):
    fp = open(r‘C:\Python27\project\DjangoE_1\template\temp.html‘,‘r‘)
    t = Template(fp.read())
    fp.close()
    html = t.render(Context({‘userName‘:‘ywc‘,‘passport‘:‘123‘}))
    return HttpResponse(html

3、在urls.py中添加链接

 (r‘^tt2/$‘, DjangoE_1.view.template_20140628),

重新在浏览器内输入浏览地址,我们可以看到和上面的浏览器输出一个结果

同样,根据Python的DRY原则,上述代码依旧不够简洁,DjangoBook给出的解释如下:


 

Django给我们提供了一个get_template()函数可以从直接加载模板而不用每次都Open()该模板

   1、在我们的setting.py中可以加载这样一个元组

STATIC_URL = ‘/static/‘
TEMPLATE_DIRS = (
   r‘C:\Python27\project\DjangoE_1\template‘,
)
这就是我们的模板加载的路径

2、在view.py中定义如下函数:
加载模块:
from django.template.loader import get_template
def template_20140629(request):
    t = get_template(‘temp.html‘);
    html = t.render(Context({‘userName‘:‘ywc‘,‘passport‘:‘123‘}))
    return HttpResponse(html)

3、在urls.py中添加下面的语句:
    (r‘^tt3/$‘, DjangoE_1.view.template_20140629)

在浏览器中输入地址,我们可以获得对应的界面。在这个过程中,我们可能会发现很对url地址的问题。在开发的过程中,由于操作系统的问题,路径中的\和/是不同的。python引入了join函数,具体的可以参考python手册。


Django Web开发学习笔记(4),布布扣,bubuko.com

评论(0)
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!