最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django中傳遞參數(shù)到URLconf的視圖函數(shù)中的方法

 更新時(shí)間:2015年07月18日 11:39:38   投稿:goldensun  
這篇文章主要介紹了Django中傳遞參數(shù)到URLconf的視圖函數(shù)中的方法,Django是最具人氣的Python開發(fā)框架,需要的朋友可以參考下

有時(shí)你會(huì)發(fā)現(xiàn)你寫的視圖函數(shù)是十分類似的,只有一點(diǎn)點(diǎn)的不同。 比如說,你有兩個(gè)視圖,它們的內(nèi)容是一致的,除了它們所用的模板不太一樣:

# urls.py

from django.conf.urls.defaults import *
from mysite import views

urlpatterns = patterns('',
  (r'^foo/$', views.foo_view),
  (r'^bar/$', views.bar_view),
)

# views.py

from django.shortcuts import render_to_response
from mysite.models import MyModel

def foo_view(request):
  m_list = MyModel.objects.filter(is_new=True)
  return render_to_response('template1.html', {'m_list': m_list})

def bar_view(request):
  m_list = MyModel.objects.filter(is_new=True)
  return render_to_response('template2.html', {'m_list': m_list})

我們?cè)谶@代碼里面做了重復(fù)的工作,不夠簡練。 起初你可能會(huì)想,通過對(duì)兩個(gè)URL都使用同樣的視圖,在URL中使用括號(hào)捕捉請(qǐng)求,然后在視圖中檢查并決定使用哪個(gè)模板來去除代碼的冗余,就像這樣:

# urls.py

from django.conf.urls.defaults import *
from mysite import views

urlpatterns = patterns('',
  (r'^(foo)/$', views.foobar_view),
  (r'^(bar)/$', views.foobar_view),
)

# views.py

from django.shortcuts import render_to_response
from mysite.models import MyModel

def foobar_view(request, url):
  m_list = MyModel.objects.filter(is_new=True)
  if url == 'foo':
    template_name = 'template1.html'
  elif url == 'bar':
    template_name = 'template2.html'
  return render_to_response(template_name, {'m_list': m_list})

這種解決方案的問題還是老缺點(diǎn),就是把你的URL耦合進(jìn)你的代碼里面了。 如果你打算把 /foo/ 改成 /fooey/ 的話,那么你就得記住要去改變視圖里面的代碼。

對(duì)一個(gè)可選URL配置參數(shù)的優(yōu)雅解決方法: URLconf里面的每一個(gè)模式都可以包含第三個(gè)數(shù)據(jù): 一個(gè)關(guān)鍵字參數(shù)的字典:

有了這個(gè)概念以后,我們就可以把我們現(xiàn)在的例子改寫成這樣:

# urls.py

from django.conf.urls.defaults import *
from mysite import views

urlpatterns = patterns('',
  (r'^foo/$', views.foobar_view, {'template_name': 'template1.html'}),
  (r'^bar/$', views.foobar_view, {'template_name': 'template2.html'}),
)

# views.py

from django.shortcuts import render_to_response
from mysite.models import MyModel

def foobar_view(request, template_name):
  m_list = MyModel.objects.filter(is_new=True)
  return render_to_response(template_name, {'m_list': m_list})

如你所見,這個(gè)例子中,URLconf指定了 template_name 。 而視圖函數(shù)會(huì)把它當(dāng)成另一個(gè)參數(shù)。

這種使用額外的URLconf參數(shù)的技術(shù)以最小的代價(jià)給你提供了向視圖函數(shù)傳遞額外信息的一個(gè)好方法。

相關(guān)文章

  • 解決ImportError:DLL load failed while importing win32api:找不到指定的模塊

    解決ImportError:DLL load failed while impo

    在安裝pywin32后,可能會(huì)出現(xiàn)無法導(dǎo)入win32api的錯(cuò)誤,一個(gè)有效的解決方案是運(yùn)行pywin32_postinstall.py腳本,首先,打開cmd并切換到環(huán)境的Scripts文件夾,確保存在pywin32_postinstall.py文件
    2024-09-09
  • Python中常用的內(nèi)置方法

    Python中常用的內(nèi)置方法

    今天小編就為大家分享一篇關(guān)于Python中常用的內(nèi)置方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Python文件讀取read()?readline()?readlines()函數(shù)使用場景技巧示例

    Python文件讀取read()?readline()?readlines()函數(shù)使用場景技巧示例

    這篇文章主要介紹了Python文件讀取read() readline()及readlines()函數(shù)使用場景技巧示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • CentOS6.9 Python環(huán)境配置(python2.7、pip、virtualenv)

    CentOS6.9 Python環(huán)境配置(python2.7、pip、virtualenv)

    這篇文章主要介紹了CentOS6.9 Python環(huán)境配置(python2.7、pip、virtualenv)方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-05-05
  • Gauss-Seidel迭代算法的Python實(shí)現(xiàn)詳解

    Gauss-Seidel迭代算法的Python實(shí)現(xiàn)詳解

    這篇文章主要介紹了Gauss-Seidel迭代算法的Python實(shí)現(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-06-06
  • 淺析Python與Mongodb數(shù)據(jù)庫之間的操作方法

    淺析Python與Mongodb數(shù)據(jù)庫之間的操作方法

    這篇文章主要介紹了Python與Mongodb數(shù)據(jù)庫之間的操作,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Windows下用py2exe將Python程序打包成exe程序的教程

    Windows下用py2exe將Python程序打包成exe程序的教程

    這篇文章主要介紹了Windows下用py2exe將Python程序打包成exe程序的教程,文中主要針對(duì)Python3.x版本進(jìn)行說明,需要的朋友可以參考下
    2015-04-04
  • python對(duì)excel文檔去重及求和的實(shí)例

    python對(duì)excel文檔去重及求和的實(shí)例

    下面小編就為大家分享一篇python對(duì)excel文檔去重及求和的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 使用Matplotlib創(chuàng)建自定義可視化圖表的方法小結(jié)

    使用Matplotlib創(chuàng)建自定義可視化圖表的方法小結(jié)

    Matplotlib 是 Python 中最流行的繪圖庫之一,它提供了豐富的功能和靈活性,使用戶能夠創(chuàng)建各種類型的可視化圖表,本文將介紹如何使用 Matplotlib 中的各種功能和技巧來創(chuàng)建自定義的可視化圖表,文中通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • Python OrderedDict字典排序方法詳解

    Python OrderedDict字典排序方法詳解

    這篇文章主要介紹了Python OrderedDict字典使用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05

最新評(píng)論

乌海市| 牙克石市| 铁力市| 正定县| 淮安市| 安庆市| 扬中市| 扬中市| 平利县| 久治县| 宕昌县| 新干县| 肥乡县| 桂东县| 新源县| 张北县| 嘉兴市| 潼南县| 北安市| 松原市| 钦州市| 德格县| 古浪县| 太仆寺旗| 利川市| 南阳市| 四会市| 稻城县| 灵山县| 荔浦县| 昭觉县| 平原县| 建阳市| 乐平市| 桃园县| 且末县| 台前县| 密云县| 桑植县| 东宁县| 嘉黎县|