国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

在Django的URLconf中進行函數導入的方法

2020-01-04 18:02:29
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了在Django的URLconf中進行函數導入的方法,Django是Python的最為著名的開發框架,需要的朋友可以參考下


看下這個 URLconf:
 
  1. from django.conf.urls.defaults import * 
  2. from mysite.views import hello, current_datetime, hours_ahead 
  3.  
  4. urlpatterns = patterns(''
  5.   (r'^hello/$', hello), 
  6.   (r'^time/$', current_datetime), 
  7.   (r'^time/plus/(/d{1,2})/$', hours_ahead), 

在 URLconf 中的每一個入口包括了它所關聯的視圖函數,直接傳入了一個函數對象。 這就意味著需要在模塊開始處導入視圖函數。
但隨著 Django 應用變得復雜,它的 URLconf 也在增長,并且維護這些導入可能使得管理變麻煩。 (對每個新的view函數,你不得不記住要導入它,并且采用這種方法會使導入語句將變得相當長。)可以通過導入 views 模塊本身來避免這個麻煩。 下面例子的URLconf與前一個等價:
 
  1. from django.conf.urls.defaults import * 
  2. **from mysite import views** 
  3.  
  4. urlpatterns = patterns(''
  5.   (r'^hello/$', **views.hello** ), 
  6.   (r'^time/$', **views.current_datetime** ), 
  7.   (r'^time/plus/(d{1,2})/$', **views.hours_ahead** ), 

Django 還提供了另一種方法可以在 URLconf 中為某個特別的模式指定視圖函數: 你可以傳入一個包含模塊名和函數名的字符串,而不是函數對象本身。 繼續示例:
 
  1. from django.conf.urls.defaults import * 
  2.  
  3. urlpatterns = patterns(''
  4.   (r'^hello/$', **'mysite.views.hello'** ), 
  5.   (r'^time/$', **'mysite.views.current_datetime'** ), 
  6.   (r'^time/plus/(d{1,2})/$', **'mysite.views.hours_ahead'** ), 

(注意視圖名前后的引號。 應該使用帶引號的 'mysite.views.current_datetime' 而不是 mysite.views.current_datetime 。)
使用這個技術,就不必導入視圖函數了;Django 會在第一次需要它時根據字符串所描述的視圖函數的名字和路徑,導入合適的視圖函數。
當使用字符串技術時,你可以采用更簡化的方式:提取出一個公共視圖前綴。 在我們的URLconf例子中,每個視圖字符串的開始部分都是``/,造成重復輸入。 我們可以把公共的前綴提取出來,作為第一個參數傳給/ ``函數:
 
 
  1. System Message: WARNING/2 (<string>, line 99); backlink 
  2.  
  3. Inline literal start-string without end-string. 
  4.  
  5. from django.conf.urls.defaults import * 
  6.  
  7. urlpatterns = patterns(**'mysite.views'** , 
  8.   (r'^hello/$', **'hello'** ), 
  9.   (r'^time/$', **'current_datetime'** ), 
  10.   (r'^time/plus/(d{1,2})/$', **'hours_ahead'** ), 

注意既不要在前綴后面跟著一個點號("." ),也不要在視圖字符串前面放一個點號。 Django 會自動處理它們。
牢記這兩種方法,哪種更好一些呢? 這取決于你的個人編碼習慣和需要。
字符串方法的好處如下:
    更緊湊,因為不需要你導入視圖函數。
    如果你的視圖函數存在于幾個不同的 Python 模塊的話,它可以使得 URLconf 更易讀和管理。
函數對象方法的好處如下:
    更容易對視圖函數進行包裝(wrap)。 參見本章后面的《包裝視圖函數》一節。
    更 Pythonic,就是說,更符合 Python 的傳統,如把函數當成對象傳遞。
兩個方法都是有效的,甚至你可以在同一個 URLconf 中混用它們。 決定權在你。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 县级市| 察隅县| 鄢陵县| 濮阳市| 江门市| 西平县| 新乡市| 天水市| 通城县| 曲周县| 霍邱县| 息烽县| 云梦县| 东兴市| 岑巩县| 和静县| 博客| 镇康县| 涿州市| 洛川县| 崇阳县| 顺平县| 岚皋县| 阿拉善盟| 信阳市| 万安县| 永宁县| 金乡县| 平乡县| 宜兴市| 大同县| 黄冈市| 云和县| 衡阳县| 团风县| 新闻| 双城市| 定结县| 安化县| 吉隆县| 金平|