第八章、視圖詳解 -- url路由

視圖回顧

  • 視圖負責接受Web請求,進行邏輯處理,返回Web響應,並與T模塊和M模塊進行交互

  • 使用步驟:
    創建應用,python manage.py startapp app
    註冊應用,在settings.py文件的INSTALLED_APPS配置項中,註冊應用
    配置url路由,在urls.py文件的urlpatterns列表中,添加路由url('index', views.index)
    定義視圖處理函數,在views.py中定義視圖處理函數indexdef 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文件的DEBUGALLOWED_HOSTS

 

DEBUG = False
ALLOWED_HOSTS = ['*', ]
  • templates目錄中創建404.html文件

  • 頁面出錯時顯示自定義的404頁面

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章