Django的第一印象

2021-09-08 15:56:55 字數 2078 閱讀 1048

django (/ˈdʒæŋgoː/) 是用python語言寫的開源web開發框架(open source web framework),鼓勵快速開發,並遵循mtv設計模式。其主要目的是簡便、快速的開發資料庫驅動的**。

django遵守 bsd版權,目前最新的穩定版(stable)是2023年9月發布的v1.3.1。

django 的名稱**於比利時的爵士**家django reinhardt,他是乙個吉普賽人,主要演奏吉它。

與rails一樣,django強調 松耦合、少寫**、快速開發、dry、一致性等原則。但django與rails在設計哲學上最大的不同在於,django強調「顯示說明優於隱含意義」,這一點來自於python的核心原則。

這一設計哲學的不同使得django與rails有很大的不同:django不喜歡「魔術**」。儘管魔術**看起來很酷,但是存在著如下問題:

1)語法晦澀難懂,除了程式語言外,你還需要了解一門自定義的dsl

2)相對於程式語言,dsl更加不穩定,可能會經常變化

3)如果你想理解其實現方式,需要花費比較大的精力

4)魔術**可以很容易地實現某些特定的功能,但是如果你想在此基礎上做一些改變,就會變得非常困難

所以,django不喜歡「魔術**」,而是強調**的可理解、可控制。

比如《agile web development with rails》中開篇用來吸引人的那個例子,乙個關於專案的model類:

class project belongs_to :portfolio

has_one :project_manager

has_many :milestones

has_and_belongs_to_many :categories

validates_presence_of :name, :description

validates_acceptance_of :non_disclosure_agreement

validates_uniqueness_of :key

end

看上去很神奇對嗎?但是你馬上就會提出幾個問題:

1)除了關聯關係外,物件自身的屬性在**定義?

2)non_discolosure_agreement是什麼屬性?

3)validates_*** 之類的語法到底有多少種?

本文並不是以介紹rails為主,所以上述問題在這裡不作回答。但是為了與django的model對比,還需要補全rails 模型的另外乙個部分:migration。事實上,在rails中,上面的model還需要乙個db migrate 類一起才能工作:

class createproject < activerecord::migration

def change

create_table :projects do |t|

t.integer :portfolio_id

t.string :name

t.text :description

...end

endend

django的設計是 以python類的形式定義資料模型,通過orm與資料庫聯絡起來。同時約定為了避免「猜謎遊戲」,不應該僅僅依賴欄位的命名來預示其可能的行為,而是通過關鍵的引數來定義操作。

上述model類在django中以如下簡單明瞭的方式來實現:

class

project(models.model):

portfolio =models.foreignkey(portfolio)

categories =models.manytomanyfield(category)

name =models.charfield()

description =models.textfield()

#其中has_one, has_many 之類的關係只在對端宣告foreighkey即可,本端不用宣告,可以直接引用

django的**清楚明白,每一條語句都很明確。這就是django的風格。(順便說一句,django的靈活性不以犧牲外來鍵關聯為代價,而rails的資料庫中不支援外來鍵關係)

ACE 第一印象

時間會比較長 提供了 ace inet addr 主要是協議族的表示 是為了使用 ace sock acceptor,這是server端必須的 就是客戶端的要使用的 ace sock connector 是為了使用 ace sock stream,類似於檔案描述符,accept將其與一新建連線繫結,...

rest第一印象

實際上,rest並不是乙個協議或技術,rest僅僅只是體系結構風格。或者說,rest僅僅只是一系列的原則。根據這些原則搭建 能夠讓我們的 更容易的被程式所使用,也就是說我們搭建 時應當假設這個 是專門為程式設計師寫程式準備的 即programmable web 所有的介面都應該盡量簡單。所以,res...

Qt第一印象

qt第一印象 qt是跨平台的c 應用程式框架,與mfc atl 框架類似,包含一套執行時機制 開發工具 和乙個龐大的類庫 區別與他們的是 qt支援很多平台,致力於實現 原始碼不動,重新編譯即可完成平台移植。講qt的書很少,chinapub上只有3本,dearbook上有4本,並且有trolltech...