posts - 431,  comments - 344,  trackbacks - 0
           django的一條哲學是(don't repeat yourself DRY ).熟悉django的人都知道,在0.96版中新加入了django.core.urlresolvers.reverse這個東東,下面讓我們來看一下這究竟是怎樣反映DRY思想的:
              首先讓我們一句話概括reverse()是干什么的?反解析url以直接訪問其它視圖方法。眾所周知,在django的mvc(mvt也可以)中,url和view是通過url.py和views.py實現分離的,具體view的訪問是通過url.py中設置的對應方法來實現的。這固然是正確的。但是考慮如下情況,我們有一個view最后實現頁面跳轉:

          views.py
              def redirect(request):
              return HttpResponseRedirect("/vote/1/")

          url.py
              (r'^
          /vote/(?P<poll_id>\d+)/$','mysite.poll.vote')

              這樣做起來就有1個問題:如果未來某天我們的url發生了改變,我們將不得不同時修改這兩個文件。這和DRY哲學思想是沖突的,那么有什么辦法能讓我們只用修改url.py呢,答案就是使用reverse().
              reverse的用例如下:

          views.py

              from django.core.urlresolvers import reverse

              def redirect(request):
              return HttpResponseRedirect(reverse('mysite.polls.views.detail',args=(1,)))

              很容易明白,第一個參數就直接添入要使用的view方法,第二個args里邊順序填入方法的參數,(extra_context也從這里傳入)然后剩下的就全部交給django去完成拉。于是我們就可以放心的修改url.py里的url配置,不
          必再擔心有什么地方沒修改網站出錯啦.SO COOL!
          posted on 2008-09-24 22:22 周銳 閱讀(1337) 評論(0)  編輯  收藏 所屬分類: Python
          主站蜘蛛池模板: 资兴市| 凌源市| 金昌市| 古交市| 温泉县| 烟台市| 津南区| 华蓥市| 土默特左旗| 含山县| 温泉县| 平顺县| 镇江市| 龙山县| 尼勒克县| 开原市| 上虞市| 海南省| 荥经县| 炉霍县| 黄冈市| 分宜县| 隆回县| 溆浦县| 漳平市| 房山区| 金昌市| 柳州市| 泰宁县| 台东县| 深水埗区| 射洪县| 孝义市| 岗巴县| 甘南县| 高台县| 兰考县| 泸州市| 泾川县| 综艺| 台前县|