今天就跟大家聊聊有關如何在Django中使用URLconf路由系統(tǒng),可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

URLconf是什么?
URL配置(URLconf)就像Django 所支撐網站的目錄。它的本質是URL與要為該URL調用的view函數之間的映射表;你就是以這種方式告訴Django,對于這個URL調用這段代碼,對于那個URL調用那段代碼。
urlpatterns = [ url(正則表達式, views視圖函數,參數,別名), re_path(正則表達式, views視圖函數,參數,別名), (在2.0以上版本中使用re_path), ]
參數說明:
正則表達式(regex):
regex是正則表達式的通用縮寫,它是一種匹配字符串或url地址的語法。Django拿著用戶請求的url地址,在urls.py文件中對urlpatterns列表中的每一項條目從頭開始進行逐一對比,一旦遇到匹配項,立即執(zhí)行該條目映射的視圖函數或二級路由,其后的條目將不再繼續(xù)匹配。因此,url路由的編寫順序至關重要!需要注意的是,regex不會去匹配GET或POST參數或域名,例如對于https://www.example.com/myapp/,regex只嘗試匹配myapp/。對于https://www.example.com/myapp/?page=3,regex也只嘗試匹配myapp/。如果你想深入研究正則表達式,可以讀一些相關的書籍或專論,但是在Django的實踐中,你不需要多高深的正則表達式知識。
性能注釋:正則表達式會進行預先編譯當URLconf模塊加載的時候,因此它的匹配搜索速度非常快,你通常感覺不到。
view試圖函數:
當正則表達式匹配到某個條目時,自動將封裝的HttpRequest對象作為第一個參數,正則表達式“捕獲”到的值作為第二個參數,傳遞給該條目指定的視圖。如果是簡單捕獲,那么捕獲值將作為一個位置參數進行傳遞,如果是命名捕獲,那么將作為關鍵字參數進行傳遞。
參數(kwargs):
任意數量的關鍵字參數可以作為一個字典傳遞給目標視圖。
別名(name):
對你的URL進行命名,可以讓你能夠在Django的任意處,尤其是模板內顯式地引用它。相當于給URL取了個全局變量名,避免了高額的維護成本。
示例:
例如服務器ip地址為127.0.0.1:8080
urlpatterns = [
path('admin/', admin.site.urls),
re_path(r'^$', views.index), # 當用戶訪問 http://127.0.0.1:8080 時,后端用view.py中的index()函數處理。$表示結尾
re_path(r"^host/(\d+)",views.host), # URL示例:127.0.0.1:8080/host/100 \d代表數字;()表示無名分組且可以傳參,函數內參數和次順序一一對應;
# +表示重復一次或多次前面類型的字符。(\d+)表示不定位數的數字
re_path(r'^host_list/(\d{4})/(\d{2})$', views.host_list), # URL示例: 127.0.0.1:8080/host_list/2015/10 {4}表示重復四次前面的數字
url(r"^register",views.register,name="reg"), # 127.0.0.1:8080/register reg是URL別名,在模板中,例如<a href="{% url 'reg' %}" rel="external nofollow" ></a>
re_path(r"^login",views.login,name="log"), # 127.0.0.1:8080/login
re_path(r'^article/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})',views.article_month), # 127.0.0.1:8080/article/2015/09/10 ?P表示有名分組,
# ()內是分組,<>內是組名函數內參數名必須和組名相同,順序可以亂。
]路由分發(fā)
如果一個項目下有很多的app,那么在urls.py里面就要寫巨多的urls映射關系。這樣看起來很不靈活,而且雜亂無章。
我們可以根據不同的app來分類不同的url請求。
首先,在urls.py里寫入urls映射條目。注意要導入include方法
url(r'^app1/',include("app01.urls")), # 路由分發(fā),所有app1開頭的,全部轉移到app01下的urls.py里去處理要在app01下創(chuàng)建一個urls.py文件,用來處理請求的URL,使之與views建立映射
urlpatterns = [ re_path(r'index/$', views.index), # 127.0.0.1:8080/app1/index ]
看完上述內容,你們對如何在Django中使用URLconf路由系統(tǒng)有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注創(chuàng)新互聯(lián)成都網站設計公司行業(yè)資訊頻道,感謝大家的支持。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
當前文章:如何在Django中使用URLconf路由系統(tǒng)-創(chuàng)新互聯(lián)
分享路徑:http://www.chinadenli.net/article28/deepjp.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站設計公司、服務器托管、網站排名、ChatGPT、全網營銷推廣、企業(yè)建站
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)