摘要:這種方式叫做反向解析反向匹配反向查詢或者簡單的反查實例視圖函數模板
URL路由 簡介
對于高質量的web應用來說,使用簡潔,優雅的URL路由是一個值得尊重的細節,Django可以隨心所欲的設計URL,不受框架的約束
為了給一個應用設計URL,你需要一個Python模塊,通常被稱為URLconf,這個模塊是純粹的URL模式(簡單的正則表達式)到python函數(視圖函數)的簡單映射
Django如何處理一個請求django加載ROOT_URLCONF指定的模塊,并尋找可用的urlpatterns,它是django.conf.urls.url()實例的一個python列表
django依次匹配每個URL,在與請求URL匹配的第一個url停下來
一旦其中的一個正則表達式匹配上,Django將導入并調用所給的視圖,這個視圖是一個簡單的python函數或者類
如果沒有匹配到正則表達式,或者如果過程中跑出異常,django將調用一個適當的錯誤處理視圖:handler404,handler500,handler403,handler400
URLconfURLconf是一個python模塊,是一個URL模式(簡單的正則表達式)到python視圖(函數或者類)之間的映射
urlpatternsurlpatterns:是一個url()實例類型的python列表
urlpatterns:中的每個正則表達式在第一次訪問他們時被編譯
url函數url(regex,view,kwargs=None,name=None)
regex:一個字符串(原始字符串)或簡單的正則表達式
view:是一個視圖函數(類)或者as_view()的結果
kwargs:傳遞額外的參數給視圖
name:url名稱
include 語法include(module,namespace=None,app_name=None) include(pattern_list) include((pattern_list,app_namespace),namespace=None) include((pattern_list,app_namespace,instance_namwespace))
module:URLconf模塊
namespace:URL命名空間
app_name:app的命名空間
pattern_list:可迭代的djang.conf.urls.url()實例
app_namespace:應用名稱空間
instance_namespace:實例的命名空間
實例:
- 主urls.py from django.conf.urls import url,include from django.contrib import admin urlpatterns = [ url(r"^dashboard/",include("dashboard.urls")), url(r"^admin/",admin.site.urls) ] - dashboard.urls配置文件 from django.conf.urls import url,include from . import views urlpatterns = [ url(r"^user/",include([ url(r"^list/$",view.userlist,name="user_list"), url(r"^info/$",view.userinfo,name="user_linfo"), url(r"^modify/",include([ url(r"status/$",view.modifystatus,name="modify_status") ])) ])) ] - dashboard.views視圖 from django.shortcuts import render from django.http import HttpResponse # Create your views here. def index(request): return HttpResponse("Index Page") def userList(request): return HttpResponse("User List Page") def userStatus(request): return HttpResponse("User Status Page") def UserInfo(request): return HttpResponse("User Info Page") - 請求方式 curl http://192.168.33.10:8080/dashboard/user/user_list/ curl http://192.168.33.10:8080/dashboard/user/modify/status/ curl http://192.168.33.10:8080/dashboard/user/modify/info/url參數
若要從URL中捕獲一個值,只需要在他周圍放置一對圓括號
urlpatterns = [ url(r"^article/2003/$",views.special_case_2003,name="special_case_2003"), url(r"^article/(2004)/$",views.articleViewInfo,name="special_case_2003"), url(r"^user/([0-9]{4})/$",views.userInfo), url(r"^date/([0-9]{4})/([0-9]{2})/([0-9]{2})$",views.dateInfo) ]
對應的視圖函數
def special_case_2003(request): return HttpResponse("2003") def articleViewInfo(request,*args,**kwargs): print(args) #位置參數獲取 return HttpResponse("request2004") def userInfo(request,*args,**kwargs): return HttpResponse(json.dumps(args)) def dateInfo(request,*args,**kwargs): data = {"year":args[0],"month":args[1],"day":args[2]} # return HttpResponse(json.dumps(data)) return JsonResponse(data)關鍵字參數
語法 (?Ppattern) - name是傳給視圖參數的名字, - pattern是一個正則表達式,也是關鍵字參數的值
實例:
url: url(r"^articles/(?P[0-9]{4})/(?P [0-9]{2})/(?P [0-9]{2})/$",views.articleInfoView) ------------------------- view視圖函數 def articleInfoView(request,*args,**kwargs): return JsonResponse(kwargs)
請求方式:http://192.168.33.10:8080/dashboard/articles/2004/12/21/
url參數-額外參數URLconfs 具有一個鉤子,讓你傳遞一個Python 字典作為額外的參數傳遞給視圖函數
django.conf.urls.url() 函數可以接收一個可選的第三個參數,它是一個字典,表示想要傳遞給視圖函數的額外關鍵字參數
url: url(r"users/(?Purl反向解析[a-z]+)",views.users,{"extra_args":"hehehe"}) view視圖函數: from django.conf.urls import url from . import views urlpatterns = [ url(r"^blog/(?P [0-9]{4})/$", views.year_archive, {"foo": "bar"}), ] 請求地址:/blog/2005/ 調用函數:views.year_archive(request, year="2005",foo="bar")
django給每個URL取了一個名字,存儲每個URL與name的映射關系
根據Django 視圖的標識和將要傳遞給它的參數的值,獲取與之關聯的URL。這種方式叫做反向解析URL、反向URL匹配、反向URL查詢或者簡單的URL反查
實例:
url: from django.conf.urls import url from . import views urlpatterns = [ url(r"^articles/([0-9]{4})/$", views.year_archive, name="news-year-archive"), ] ----------------------- 視圖函數 from django.core.urlresolvers import reverse 模板: {{ yaervar }}Archieve
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44955.html
摘要:這種方式叫做反向解析反向匹配反向查詢或者簡單的反查實例視圖函數模板 URL路由 簡介 對于高質量的web應用來說,使用簡潔,優雅的URL路由是一個值得尊重的細節,Django可以隨心所欲的設計URL,不受框架的約束 為了給一個應用設計URL,你需要一個Python模塊,通常被稱為URLconf,這個模塊是純粹的URL模式(簡單的正則表達式)到python函數(視圖函數)的簡單映射 ...
摘要:基礎之二簡介官方文檔安裝與配置安裝配置重新創建數據庫并配置新建一個的將座位,并做配置加入環境變量定義好主備路由主路由項目路由創建名稱地址聯系電話郵箱創建數據庫同步生成數據北京機房北京市酒仙橋北京機房上海機房上海上 DRF基礎之二 簡介 官方文檔 Requirements REST framework requires the following: Python (2.7, 3.4, ...
摘要:回顧模板相關的知識點與模型不相關的做渲染,傳遞和前端頁面主路由文件路由文件視圖文件模板文件類視圖版本的模板渲染路由類視圖版本模板視圖版本路由模板視圖版本接受模板傳過來的參數,然后渲染 回顧 模板相關的知識點 與模型不相關的 render做渲染,傳遞request和前端頁面 - devops/urls.py #主路由文件 from django.conf.urls import url,...
閱讀 3247·2021-09-22 15:58
閱讀 1717·2019-08-30 14:17
閱讀 1716·2019-08-28 18:05
閱讀 1505·2019-08-26 13:33
閱讀 683·2019-08-26 12:20
閱讀 606·2019-08-26 12:18
閱讀 3192·2019-08-26 11:59
閱讀 1401·2019-08-26 10:36