91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么實現Django中視圖函數的參數傳遞

發布時間:2020-08-25 09:59:00 來源:億速云 閱讀:212 作者:Leah 欄目:編程語言

本篇文章為大家展示了怎么實現Django中視圖函數的參數傳遞,代碼簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

有時你會發現你寫的視圖函數是十分類似的,只有一點點的不同。 比如說,你有兩個視圖,它們的內容是一致的,除了它們所用的模板不太一樣,因此將部分參數傳遞到URLconf的視圖函數中就可以了。

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

我們在這代碼里面做了重復的工作,不夠簡練。 起初你可能會想,通過對兩個URL都使用同樣的視圖,在URL中使用括號捕捉請求,然后在視圖中檢查并決定使用哪個模板來去除代碼的冗余,就像這樣:

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

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

對一個可選URL配置參數的優雅解決方法: URLconf里面的每一個模式都可以包含第三個數據: 一個關鍵字參數的字典:

有了這個概念以后,我們就可以把我們現在的例子改寫成這樣:

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

如你所見,這個例子中,URLconf指定了 template_name 。 而視圖函數會把它當成另一個參數。

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

上述內容就是怎么實現Django中視圖函數的參數傳遞,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西平县| 闻喜县| 开封县| 定西市| 鄯善县| 沽源县| 饶平县| 宁津县| 凌海市| 莱州市| 太原市| 昌江| 和平县| 嘉禾县| 汉中市| 宁都县| 柏乡县| 遵化市| 临澧县| 建阳市| 化州市| 青海省| 古交市| 仙游县| 水富县| 东丽区| 舒城县| 华亭县| 锦州市| 石城县| 长沙县| 聂拉木县| 临桂县| 行唐县| 禹州市| 甘孜| 当阳市| 长阳| 甘谷县| 南部县| 融水|