建立Python Django开发框架,实现表单的有效性检验。可以方便的从你定义的模型实例生成相应的表单,你可以跟随他们一步步体验Django的优美,使用Django强大而可扩展的模板语言,可以分隔设计、内容和Python代码。并且具有可继承性。
所以并不能全面的了解或者理解Python Django开发框架中form的所有细节,不过从我涉及到的部分来讲,我对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对象直接生成页面中的内容,不过这一点其实也有比较麻烦的地方,就是如果要改变样式的时候就比较麻烦。不过总的来说django的form还是比较有特点的,而且一定程度上给我们带来了方便。
Python Django开发框架的url转发是基于正则表达式的,有的人叫好,有的人叫差,我就是叫差的那一拨人之一。url转发应该是一个非常清楚,非常明亮的事情,可是用上这个正则表达式匹配的东西之后,我郁闷了。
所以我只能回到遥远的过去去绕过这个东东,我不用总可以了吧。 从目前目前掌握的知识来看,django的views里的东西其实是controller,为什么叫views?不得而知,不过一直这么沿用下来了,即使是在自然界。
很多表面上去不太一样得东西,其实内部的原理是一样的,我就觉得django的views就是struts1.x中的action,为什么这样说呢,让我们来看看两段比较的代码,***段是django的,第二段是struts1.x的:
- def index(request):
- categoryList = Category.objects.filter(enable = True)
- for cate in categoryList:
- informationList = Information.objects.filter(catecategory = cate)[0:5]
- cate.informationList = informationList
- c = Context({"categoryList":categoryList})
- return render_to_response(indexPage, c)
从形式上来看,两者出奇的相似,比如说传入的参数等。我们知道python是面向对象的语言,但是事实上它也支持函数编程,如果def定义在class内部,那么就是对象的方法。否则。
就可以认为是函数编程了,看看,我们的Python Django开发框架里的东西都是函数,views其实是一个模块,这个模块我们可以认为是struts1.x中的action,而views中的函数可以认为是action中的方法。它们是远房亲戚。
【编辑推荐】