建立Python Django開發(fā)框架問題說明
建立Python Django開發(fā)框架,實(shí)現(xiàn)表單的有效性檢驗(yàn)??梢苑奖愕膹哪愣x的模型實(shí)例生成相應(yīng)的表單,你可以跟隨他們一步步體驗(yàn)Django的優(yōu)美,使用Django強(qiáng)大而可擴(kuò)展的模板語言,可以分隔設(shè)計(jì)、內(nèi)容和Python代碼。并且具有可繼承性。
所以并不能全面的了解或者理解Python Django開發(fā)框架中form的所有細(xì)節(jié),不過從我涉及到的部分來講,我對(duì)django的從模型創(chuàng)建表單的做法確實(shí)感到有比較大的局限性。因?yàn)楹芏鄷r(shí)候,model中的數(shù)據(jù) 并不是從頁面上來的,在這種情況下,form對(duì)象被構(gòu)造出來之后,ahuaxuan還沒有找到修改form中值的方法。
而自定義form類也比較麻煩,就是要寫自己的model,這個(gè)和我們之前的做法比較不一樣,這里的form代表我們java中的value object,model是domain object,在我們的ssh框架中我們通常把value object繼承我們的domain object。
雖然一堆又一堆的人提出了反對(duì)意見,說要把這兩個(gè)對(duì)象分開,因?yàn)樗麄兲幵诓煌膶哟沃校菑膶?shí)踐經(jīng)驗(yàn)中,我們可以看到,這樣做沒有什么不好。而在django中自定義form和model分開的行為可能比較符合一些人的心理。 不過自定義forms也有比較讓人稱道的地方,在form中我們可以自定義驗(yàn)證規(guī)則。
同時(shí)我們可以根據(jù)form對(duì)象直接生成頁面中的內(nèi)容,不過這一點(diǎn)其實(shí)也有比較麻煩的地方,就是如果要改變樣式的時(shí)候就比較麻煩。不過總的來說django的form還是比較有特點(diǎn)的,而且一定程度上給我們帶來了方便。
Python Django開發(fā)框架的url轉(zhuǎn)發(fā)是基于正則表達(dá)式的,有的人叫好,有的人叫差,我就是叫差的那一撥人之一。url轉(zhuǎn)發(fā)應(yīng)該是一個(gè)非常清楚,非常明亮的事情,可是用上這個(gè)正則表達(dá)式匹配的東西之后,我郁悶了。
所以我只能回到遙遠(yuǎn)的過去去繞過這個(gè)東東,我不用總可以了吧。 從目前目前掌握的知識(shí)來看,django的views里的東西其實(shí)是controller,為什么叫views?不得而知,不過一直這么沿用下來了,即使是在自然界。
很多表面上去不太一樣得東西,其實(shí)內(nèi)部的原理是一樣的,我就覺得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)
從形式上來看,兩者出奇的相似,比如說傳入的參數(shù)等。我們知道python是面向?qū)ο蟮恼Z言,但是事實(shí)上它也支持函數(shù)編程,如果def定義在class內(nèi)部,那么就是對(duì)象的方法。否則。
就可以認(rèn)為是函數(shù)編程了,看看,我們的Python Django開發(fā)框架里的東西都是函數(shù),views其實(shí)是一個(gè)模塊,這個(gè)模塊我們可以認(rèn)為是struts1.x中的action,而views中的函數(shù)可以認(rèn)為是action中的方法。它們是遠(yuǎn)房親戚。
【編輯推薦】