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
          主站蜘蛛池模板: 许昌市| 宜城市| 永川市| 商丘市| 德保县| 涪陵区| 泰州市| 镇康县| 达拉特旗| 昌吉市| 桂林市| 平安县| 宜章县| 普兰县| 寿阳县| 盱眙县| 乐陵市| 昌宁县| 温泉县| 泸水县| 沅陵县| 奉新县| 阿巴嘎旗| 四子王旗| 清河县| 贵定县| 湖北省| 启东市| 湄潭县| 泗水县| 呼和浩特市| 报价| 胶州市| 峨边| 濉溪县| 鄂州市| 泾阳县| 饶阳县| 连云港市| 望城县| 定安县|