視圖回顧
視圖負責接受Web請求,進行邏輯處理,返回Web響應,並與T模塊和M模塊進行交互
使用步驟:
創建應用,python manage.py startapp app
註冊應用,在settings.py
文件的INSTALLED_APPS
配置項中,註冊應用
配置url路由,在urls.py
文件的urlpatterns
列表中,添加路由url('index', views.index)
定義視圖處理函數,在views.py
中定義視圖處理函數index
,def index(request):
url路由
一條URL路由包括:url規則
和視圖處理函數
兩部分:
- url規則:
使用字符串進行精確匹配
使用正則表達式匹配,格式爲r'模式匹配串'
,
之前的
127.0.0.1:8000/app/index
,使用正則方式後修改爲:
項目urls.py:url('app/', include('app.urls')),
應用urls.py:url(r'^index/$', views.index),
- 視圖處理函數:
定義方式:url(url規則, '視圖處理函數名')
,常用於應用中,例如:url(r'^area$', views.area),
包含方式:url(url規則, include('應用.urls'))
,常用於項目,如:url('app/', include('app.urls')),
實例演練: 增加視圖app/vtest
,視圖處理函數views.vtest
修改urls.py文件:添加:url(r'^vtest/$', views.vtest)
修改views.py文件:添加:def vtest(request):
從URL請求中獲取數據
URL請求被看做一個普通的python字符串,匹配時不包括域名、get或post參數
例如:請求地址
http://127.0.0.1:8000/app/vtest123/?a=10
,會去除掉域名和參數部分,並將最前面的/
去除後,只將剩下的部分app/vtest123/
進行正則匹配
實例演練: 匹配app/vtest+任意數字
的URL請求
- 修改urls.py文件:
url(r'^vtest\d+/$', views.vtest),
- 修改views.py文件:
return HttpResponse('測試視圖')
獲得數據
從URL請求中獲得的參數作爲字符串傳遞給視圖處理函數
在正則表達式中使用小括號來指定獲得參數的部分,分爲兩種方式:
- 位置參數
- 關鍵字參數
位置參數方式:
- 修改urls.py文件:
url(r'^vtest(\d+)/$', views.vtest),
- 修改views.py文件:
def vtest(request, id):
return HttpResponse('測試視圖:%s' % id)
關鍵字參數方式:
- 修改urls.py文件:
url(r'^vtest(?P<id1>\d+)/$', views.vtest),
- 修改views.py文件:
def vtest(request, id1):
return HttpResponse('測試視圖:%s' % id1)
自定義錯誤頁
當請求的頁面資源無法找到時,會拋出404錯誤
也可以自定義404錯誤頁
- 修改
setting.py
文件的DEBUG
和ALLOWED_HOSTS
項
DEBUG = False
ALLOWED_HOSTS = ['*', ]
- 在
templates
目錄中創建404.html
文件
- 頁面出錯時顯示自定義的404頁面