欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

有時(shí)你會(huì)發(fā)現(xiàn)你寫的視圖函數(shù)是十分類似的,只有一點(diǎn)點(diǎn)的不同。 比如說(shuō),你有兩個(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ù)的工作,不夠簡(jiǎn)練。 起初你可能會(huì)想,通過(guò)對(duì)兩個(gè)URL都使用同樣的視圖,在URL中使用括號(hào)捕捉請(qǐng)求,然后在視圖中檢查并決定使用哪個(gè)模板來(lái)去除代碼的冗余,就像這樣:

# 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})

這種解決方案的問(wèn)題還是老缺點(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})

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

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

相關(guān)文章

  • Python WEB應(yīng)用部署的實(shí)現(xiàn)方法

    Python WEB應(yīng)用部署的實(shí)現(xiàn)方法

    這篇文章主要介紹了Python WEB應(yīng)用部署的實(shí)現(xiàn)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • python實(shí)現(xiàn)合并多個(gè)list及合并多個(gè)django QuerySet的方法示例

    python實(shí)現(xiàn)合并多個(gè)list及合并多個(gè)django QuerySet的方法示例

    這篇文章主要介紹了python實(shí)現(xiàn)合并多個(gè)list及合并多個(gè)django QuerySet的方法,結(jié)合實(shí)例形式分析了Python使用chain合并多個(gè)list以及合并Django中多個(gè)QuerySet的相關(guān)操作技巧,需要的朋友可以參考下
    2019-06-06
  • Python面向?qū)ο缶幊讨惖倪\(yùn)算

    Python面向?qū)ο缶幊讨惖倪\(yùn)算

    這篇文章主要介紹了Python面向?qū)ο缶幊讨惖倪\(yùn)算,運(yùn)算即Operation是操作邏輯的抽象,運(yùn)算體現(xiàn)一種操作邏輯,在廣義角度來(lái)說(shuō)任何程序都是一種運(yùn)算,接下來(lái)看看文章具體內(nèi)容及各種舉例說(shuō)明,希望對(duì)你有所幫助
    2021-11-11
  • python實(shí)現(xiàn)的讀取網(wǎng)頁(yè)并分詞功能示例

    python實(shí)現(xiàn)的讀取網(wǎng)頁(yè)并分詞功能示例

    這篇文章主要介紹了python實(shí)現(xiàn)的讀取網(wǎng)頁(yè)并分詞功能,結(jié)合實(shí)例形式分析了Python使用requests模塊讀取網(wǎng)頁(yè),以及jieba庫(kù)分詞的相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10
  • 在python3.9下如何安裝scrapy的方法

    在python3.9下如何安裝scrapy的方法

    這篇文章主要介紹了在python3.9下如何安裝scrapy的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 一文教會(huì)你利用Python程序讀取Excel創(chuàng)建折線圖

    一文教會(huì)你利用Python程序讀取Excel創(chuàng)建折線圖

    不同類型的圖表有不同的功能,柱形圖主要用于對(duì)比數(shù)據(jù),折線圖主要用于展示數(shù)據(jù)變化的趨勢(shì),散點(diǎn)圖主要用于判斷數(shù)據(jù)的相關(guān)性,下面這篇文章主要給大家介紹了關(guān)于如何通過(guò)一文教你利用Python程序讀取Excel創(chuàng)建折線圖的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • pyCharm中python對(duì)象的自動(dòng)提示方式

    pyCharm中python對(duì)象的自動(dòng)提示方式

    這篇文章主要介紹了pyCharm中python對(duì)象的自動(dòng)提示方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Django使用HttpResponse返回圖片并顯示的方法

    Django使用HttpResponse返回圖片并顯示的方法

    今天小編就為大家分享一篇Django使用HttpResponse返回圖片并顯示的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • python爬蟲(chóng)之BeautifulSoup 使用select方法詳解

    python爬蟲(chóng)之BeautifulSoup 使用select方法詳解

    本篇文章主要介紹了python爬蟲(chóng)之BeautifulSoup 使用select方法詳解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • python字符串,元組,列表,字典互轉(zhuǎn)代碼實(shí)例詳解

    python字符串,元組,列表,字典互轉(zhuǎn)代碼實(shí)例詳解

    這篇文章主要介紹了python字符串,元組,列表,字典互轉(zhuǎn)代碼實(shí)例詳解,需要的朋友可以參考下
    2020-02-02

最新評(píng)論