国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

詳解Python的Django框架中的通用視圖

2020-02-23 01:04:22
字體:
來源:轉載
供稿:網友

通用視圖
1. 前言

回想一下,在Django中view層起到的作用是相當于controller的角色,在view中實施的
動作,一般是取得請求參數,再從model中得到數據,再通過數據創建模板,返回相應
響應對象。但在一些比較通用的功能中,比如顯示對象列表,顯示某對象信息,如果反復
寫這么多流程的代碼,也是一件浪費時間的事,在這里,Django同樣給我們提供了類似的
"shortcut"捷徑--通用視圖。
2. 使用通用視圖
使用通用視圖的方法就是在urls.py這個路徑配置文件中進行,創建字典配置信息,然后
傳入patterns里的元組的第三個參數(extra-parameter),下面來看一個簡單的例子:

from django.conf.urls.defaults import *from django.views.generic.simple import direct_to_templateurlpatterns = patterns('',  url(r'^about/$', direct_to_template, {'template': 'about.html'}),)

運行結果:

201554160206617.png (384×80)
可以看到,沒有view的代碼,也可以直接運行。在這里direct_to_template,這個方法
,傳入第三個參數,然后直接進行渲染。
 
 
同時因為direct_to_template是一個函數,我們又可以把它放在view中,下面把
上面的例子改成匹配about/*,任意子網頁。

#urls.pyfrom django.conf.urls.defaults import *from django.views.generic.simple import direct_to_templatefrom mysite.books.views import about_pagesurlpatterns = patterns('',  (r'^about/$', direct_to_template, {                    'template': 'about.html'                   }),  (r'^about/(/w+)/$', about_pages),)# view.pyfrom django.http import Http404from django.template import TemplateDoesNotExistfrom django.views.generic.simple import direct_to_template#由正則匹配的參數def about_pages(request, page):  try:    return direct_to_template(request, template="about/%s.html" % page)#返回的HttpResponse  except TemplateDoesNotExist:    raise Http404()

運行結果:

201554160228301.png (411×132)

安全問題的題外話
上面的例子中,有一個潛在的安全問題,比較容易被忽略。那就是template="about/%s.html" % page這
句,這樣構造路徑容易被名為directory traversal的手段攻擊,簡單的說就是利用"../"這樣的返回父目錄的
路徑操作,去訪問原本不應該被訪問到的服務器上的文件,又被稱為dot dot slash攻擊。比如
使用"http://www.cnblogs.com/../etc/passwd"路徑的話,有可能就能讀取到服務器上的passwd這個文件,從而獲取到
關鍵密碼。
 
發布這篇博文的時候,cnblogs會把連續的"../"轉義成"http://www.cnblogs.com",難道是在防止

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 岚皋县| 鸡东县| 平果县| 天全县| 新田县| 蒙阴县| 云霄县| 天祝| 夏津县| 蕲春县| 津南区| 海兴县| 马鞍山市| 合山市| 平陆县| 清原| 改则县| 河源市| 江门市| 上栗县| 陆丰市| 中阳县| 高尔夫| 樟树市| 额尔古纳市| 大关县| 常熟市| 东阿县| 西华县| 洞头县| 勃利县| 扎兰屯市| 石首市| 新绛县| 鄢陵县| 上饶县| 塔河县| 依兰县| 松溪县| 饶河县| 印江|