django的學習筆記

2021-07-11 06:31:23 字數 4397 閱讀 8173

想要在python**中使用模板系統,只需遵循下面兩個步驟:

1.可以用原始的模板**字串建立乙個 template 物件,django同樣支援用指定模板檔案路徑的方式來建立 template 物件;

呼叫 template 物件的 render() 方法並提供給他變數(i.e., 內容).它將返回乙個完整的模板字串內容,包含了所有標籤塊與變數解析後的內容.

一旦你建立乙個 template 物件,你可以用 context 來傳遞資料給它。乙個context是一系列變數和它們值的集合。模板使用它來賦值模板變數標籤和執行塊標籤。

context在django裡表現為 context 類,在 django.template 模組裡。 它的建構函式有乙個可選引數:乙個字典(對映變數和它們的值)。呼叫 template 物件 的 render() 方法並傳遞context來填充模板:

from django.template import context, template

>>> t = template("my name is }.")

>>> c = context()

>>> t.render(c)

'my name is stephane.'

一旦有了 模板 物件,你就可以通過它渲染多個背景(context),例如:

>>> from django.template import template, context

>>> t = template('hello, }')

>>> print t.render(context())

hello, john

>>> print t.render(context())

hello, julie

>>> print t.render(context())

hello, pat

1

無論何時像這樣使用同一模板源渲染多個背景,只建立 一次

模板 物件,然後對它多次呼叫 render() 將會更加高效。

# bad

for name in ('john', 'julie', 'pat'):

t = template('hello, }')

print t.render(context())

# good

t = template('hello, }')

for name in ('john', 'julie', 'pat'):

print t.render(context())

在到目前為止的例子中,我們通過 context 傳遞的簡單引數值主要是字串,還有乙個 

datetime.date

範例。然而,模板系統能夠非常簡潔地處理更加複雜的資料結構,例如list、dictionary和自定義的物件。

from django.template import template, context

>>> person =

>>> t = template('} is } years old.')

>>> c = context()

>>> t.render(c)

'sally is 43 years old.'

同樣,也可以通過句點來訪問物件的屬性。比方說, python 的 

datetime.date

物件有 

year

、 month

和 day 幾個屬性,你同樣可以在模板中使用句點來訪問這些屬性:

from django.template import template, context

>>> import datetime

>>> d = datetime.date(1993, 5, 2)

>>> d.year

1993

>>> d.month

5>>> d.day

2>>> t = template('the month is } and the year is }.')

>>> c = context()

>>> t.render(c)

'the month is 5 and the year is 1993.'

用類的例項渲染模板

from django.template import template, context

>>> class person(object):

... def __init__(self, first_name, last_name):

... self.first_name, self.last_name = first_name, last_name

>>> t = template('hello, } }.')

>>> c = context()

>>> t.render(c)

'hello, john smith.'

最後,句點也可用於訪問列表索引,

from django.template import template, context

>>> t = template('item 2 is }.')

>>> t.render(c)

'item 2 is carrots.'

方法呼叫行為

方法呼叫比其他型別的查詢略為複雜一點。 以下是一些注意事項:

在方法查詢過程中,如果某方法丟擲乙個異常,除非該異常有乙個 silent_variable_failure 屬性並且值為 true ,否則的話它將被傳播。如果異常被傳播,模板裡的指定變數會被置為空字串,比如:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

>>> t=template("my name is }.")

>>>classpersonclass3:

...deffirst_name(self):

...raiseassertionerror,"foo"

>>> p=personclass3()

>>> t.render(context())

traceback (most recent call last):

...

assertionerror: foo

>>>classsilentassertionerror(assertionerror):

...   silent_variable_failure=true

>>>classpersonclass4:

...deffirst_name(self):

...raisesilentassertionerror

>>> p=personclass4()

>>> t.render(context())

u'my name is .'

僅在方法無需傳入引數時,其呼叫才有效。 否則,系統將會轉移到下乙個查詢型別(列表索引查詢)。

Django學習筆記

django web程式設計思路 global setting run server check environment start project django admin.py startproject mysite 生成專案檔案 manage.py 檔案基本就是 django admin.py...

django學習筆記( )

下面的都是自己學習django框架開發的過程記錄,全當做筆記了,不喜勿噴,大神求指教 環境 ubuntu14.04 django 1.8.3 python 2.7.6 ide eclipse pydev 首先先建立乙個django project 名為blog 再在blog下建立statics與te...

django學習筆記

為了學習fabric,因為fabric的示例用到了django專案,所以就快速地開始根據官網的教程,搭建了簡單的投票應用,剛走通了前幾步。我覺得django搭建 的速度實在是超級快!非常適合快速原型開發。我很喜歡的是,只要改改模型 model view controller的model 也就是核心業...