对Python Django的模板操作说明

开发 后端
Python Django的模板可以说是非常的简单,这款语言熟悉一下在看一下文档就能上手操作了,在java中,freemarker和velocity我都用过。

在开发的时候发现Python Django的模板创建表单的做法确实感到有比较大的局限性,不过自定义forms也有比较让人称道的地方,在form中我们可以自定义验证规则,下面介绍说明一下Python Django的模板的操作。

最复杂功能***大的还是freemarker,支持jsp tag的嵌入让我们可以重用很多已经存在的组件,这一点我在之前的文章中也有过比较详细的描述(强强联手,看freemarker和displaytag的结合)。

由于了解,才有发言权,Python Django的模板可以说是为互连网应用而诞生的,简洁及快速开发的特点让人情不自禁的喜欢。大多数模板语言的基本语法都是类似的,比如在freemarker中显示值是${},而在django是{{}},freemarker中if判断为<#if></#if>,而django中是:

  1. {% if msg %}     
  2.     Xx     
  3. {% else %}     
  4. Xx     
  5. {% endif%}   

再看看在django中渲染模板的方法,有两种:

  1. def preparePublish(request):     
  2.     t = loader.get_template(publishInfo)     
  3. return HttpResponse(t.render(Context({'categoryList' : None})))   

插一句题外话,关于jsp的题外话,不管是ruby,还是c++,还是python,在它们的web框架中都使用了模板,java中也有很多模板,我们最熟悉的是freemarker和velocity。这从一个侧面反映出我们web开发中的一个模式,那就是我们的view基本上是基于模板产生的,而jsp这个东西应该来说是时代的产物,在那个混乱的落后的时代产生的,不过很奇怪的是现在还有这么多人抱着它不放。

Django有两种form,一种是自己定义form class,还有一种是通过我们定义的model自动form class。 由于ahuaxuan只做 了一个信息发布的小例子,所以并不能全面的了解或者理解django中form的所有细节,不过从我涉及到的部分来讲。

我对Python Django的模板创建表单的做法确实感到有比较大的局限性,因为很多时候,model中的数据 并不是从页面上来的,在这种情况下,form对象被构造出来之后,ahuaxuan还没有找到修改form中值的方法。

而自定义form类也比较麻烦,就是要写自己的model,这个和我们之前的做法比较不一样,这里的form代表我们java中的value object,model是domain object,在我们的ssh框架中我们通常把value object继承我们的domain object。

虽然一堆又一堆的人提出了反对意见,说要把这两个对象分开,因为他们处在不同的层次中,但是从实践经验中,我们可以看到,这样做没有什么不好。而在django中自定义form和model分开的行为可能比较符合一些人的心理。 不过自定义forms也有比较让人称道的地方,在form中我们可以自定义验证规则。

同时我们可以根据form对象直接生成页面中的内容,不过这一点其实也有比较麻烦的地方,就是如果要改变样式的时候就比较麻烦,不过总的来说Python Django的模板的form还是比较有特点的,而且一定程度上给我们带来了方面。

【编辑推荐】

  1. 如何使Python嵌入C++应用程序?
  2. 深入探讨Ruby与Python语法比较
  3. Python学习资料介绍分享
  4. Python学习经验谈:版本、IDE选择及编码解 决方案
  5. 浅析Python的GIL和线程安全
责任编辑:chenqingxiang 来源: 腾讯科技
相关推荐

2010-02-01 09:40:08

Python操作

2010-02-01 10:04:25

Python模板函数

2010-02-02 13:28:46

Python变量

2010-02-01 11:03:51

Python Djan

2009-07-29 15:42:37

asp.net1.1开

2010-02-22 15:13:01

Python模块

2010-03-01 13:13:02

Python应用线程

2010-02-02 14:42:38

Python线程

2010-02-22 11:14:43

Python编写

2010-02-26 13:56:08

Python RSS

2010-02-24 16:44:58

Python 函数

2010-02-26 10:07:55

Python编程语言

2010-01-12 14:30:41

C++程序

2010-02-26 09:42:52

Python线程池

2010-02-26 10:55:53

Python系统程序

2010-02-22 14:54:47

Python应用程序

2010-02-23 11:18:25

Python 操作符

2022-04-08 11:39:26

OTA操作说明鸿蒙

2009-07-16 16:51:49

JDBC连接设置

2010-03-19 17:39:49

Python编程
点赞
收藏

51CTO技术栈公众号