在Django的URLconf中進行函式匯入的方法

2022-10-04 22:27:31 字數 2209 閱讀 5143

看下這個 urlconf:

from django.conf.urls.defaults import *

from mysite.views import hello, current_datetime, h程式設計客棧ours_ahead

urlpatterns = patterns('',

(r'^hello/$', hello),

(r'^time/$', current_datetime),

(r'^time/plus/(\d)/$', hours_ahead),

)在 urlconf 中的每乙個入口包括了它所關聯的檢視函式,直接傳入了乙個函式物件。 這就意味著需要在模組開始處匯入檢視函式。

但隨著 django 應用變得複雜,它的 urlconf 也在增長,並且維護這些匯入可能使得管理變麻煩。 (對每個新的view函式,你不得不記住要匯入它,並且採用這種方法會使匯入語句將變得相當長。)可以通過匯入 views 模組本身來避免這個麻煩。 下面例子的urlconf與前乙個等價:

from django.conf.urls.defaults import *

程式設計客棧**from mysite import views**

urlpatterns = patterns('',

(r'^hello/$', **views.hello** ),

(r'^time/$', **views.current_datetime** ),

(r'^time/plus/(d)/$', **views.hours_ahead** ),

)django 還提供了另一種方法可以在 urlconf 中為某個特別的模式指定檢視函式: 你可以傳入乙個包含模組名和函式名的字串,而不是函式物件本身。 繼續示例:

from django.conf.urls.defaults import *

urlpatterns = patterns('',

(r'^hello/$', **'mysite.views.hello'** ),

(r'^time/$', **'mysite.views.current_datetime'** ),

(r'^time/plus/(d)/$', **'mysite.views.hours_ahead'** ),

)(注意檢視名前後的引號。 應該使用帶引號的 'mysite.views.current_datetime' 而不是 mysite.views.current_datetime 。)

使用這個技術,就不必匯入檢視函式了;django 會在第一次需要它時根據字串所描述的檢視函式的名字和路徑,匯入合適的檢視函式。

當使用字串技術時,你可以採用更簡化的方式:提取出乙個公共檢視字首。 在我們的urlconf例子中,每個檢視字串的開始部分都是``\,造成重複輸入。 我們可以把公共的字首提取出來,作為第乙個引數傳給\ ``函式:

system message: warning/2 (, line 99); backlink

inline literal start-string without end-string.

from django.conf.urls.defaults import *

urlpatterns = patterns(**'mysite.views'** ,

(r'vbbkqwdsb^hello/$', **'hello'** ),

(r'^time/$', **'current_datetime'** ),

(r'^time/plus/(d)/$', **'hours_ahead'** ),

)注意既不要在字首後面跟著乙個點號("." ),也不要在檢視字串前面放乙個點號。 django 會自動處理它們。

牢記這兩種方法,哪種更好一些呢? 這取決於你的個人編碼習慣和需要。

字串方法的好處如下:

更緊湊,因為不需要你匯入檢視函式。

如果你的檢視函式存在於幾個不同的 python 模組的話,它可以使得 urlconf 更易讀和管理。

函式物件方法的好處如下:

更容易對檢視函式進行包裝(wrap)。 參見本章後面的《包裝檢視函式》一節。

更 pythonic,就是說,更符合 p程式設計客棧ython 的傳統,如把函式當成物件傳遞。

兩個方法都是有效的,甚至你可以在同乙個 urlconf 中混用它們。 決定權在你。

本文標題: 在django的urlconf中進行函式匯入的方法

本文位址: /jiaoben/python/128258.html

django在urlconf中使用include

根檔案urls.py coding utf 8 django book url configuration the urlpatterns list routes urls to views.for more information please see examples function view...

Django 路由系統 URLconf

urlconf url配置 urlconf 就像django 所支撐 的目錄。它的本質是url與要為該url呼叫的view函式之間的對映表 你就是以這種方式告訴django,對於這個url呼叫這段 對於那個url呼叫那段 urlpatterns url 正規表示式,views檢視函式,引數,別名 r...

5 1 Django的路由層 urlconf

url配置 urlconf 就像django 所支撐 的目錄。它的本質是url與要為該url呼叫的檢視函式之間的對映表 你就是以這種方式告訴django,對於客戶端發來的某個url呼叫哪一段邏輯 對應執行。from django.conf.urls import urlfrom import vie...