一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Django 路由系統URLconf的使用

Django 路由系統URLconf的使用

2021-04-06 00:21學霸初養成 Python

這篇文章主要介紹了Django 路由系統URLconf的使用,詳細的介紹了什么是URLconf以及如何使用,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

URLconf是什么?

URL配置(URLconf)就像Django 所支撐網站的目錄。它的本質是URL與要為該URL調用的view函數之間的映射表;你就是以這種方式告訴Django,對于這個URL調用這段代碼,對于那個URL調用那段代碼。

?
1
2
3
4
urlpatterns = [
   url(正則表達式, views視圖函數,參數,別名),
   re_path(正則表達式, views視圖函數,參數,別名), (在2.0以上版本中使用re_path),
]

參數說明:

正則表達式(regex):

regex是正則表達式的通用縮寫,它是一種匹配字符串或url地址的語法。Django拿著用戶請求的url地址,在urls.py文件中對urlpatterns列表中的每一項條目從頭開始進行逐一對比,一旦遇到匹配項,立即執行該條目映射的視圖函數或二級路由,其后的條目將不再繼續匹配。因此,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取了個全局變量名,避免了高額的維護成本。

Django 路由系統URLconf的使用

示例:

例如服務器ip地址為127.0.0.1:8080

?
1
2
3
4
5
6
7
8
9
10
11
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表示有名分組,
      # ()內是分組,<>內是組名函數內參數名必須和組名相同,順序可以亂。
]

路由分發

如果一個項目下有很多的app,那么在urls.py里面就要寫巨多的urls映射關系。這樣看起來很不靈活,而且雜亂無章。

我們可以根據不同的app來分類不同的url請求。

首先,在urls.py里寫入urls映射條目。注意要導入include方法

?
1
url(r'^app1/',include("app01.urls")), # 路由分發,所有app1開頭的,全部轉移到app01下的urls.py里去處理

要在app01下創建一個urls.py文件,用來處理請求的URL,使之與views建立映射

?
1
2
3
urlpatterns = [
  re_path(r'index/$', views.index), # 127.0.0.1:8080/app1/index
]

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/V587Chinese/p/9762546.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲aⅴ男人的天堂在线观看 | 日本红色高清免费观看 | 日本免费三片在线观看 | 国内精品久久久久久野外 | 激情男人天堂 | 成年人免费在线看 | zoofilivideo杂交3d | 国产卡一卡二卡3卡乱码免费 | 日韩欧美国产免费看清风阁 | 精品久久久久久 | 欧美亚洲一区二区三区在线 | 国产精品吹潮香蕉在线观看 | 精品国产乱码久久久人妻 | 亚洲欧美成人综合在线 | 欧美精品1区 | 滑进了柔佳火热紧夹的 | 国产经典一区二区三区蜜芽 | 国内精品91东航翘臀女神在线 | 亚洲色图欧美色 | 天天碰夜夜操 | 秋霞717理论片在线观看 | 国产一区二区视频在线观看 | 色图大全 | 天堂69亚洲精品中文字幕 | kkkk4444在线看片免费 | 欧美日韩国产精品综合 | 歪歪私人影院成人毛片 | 亚洲网站大全 | 欧美精品亚洲精品日韩专区va | 插鸡视频在线观看 | 美女张开腿让男人桶的 视频 | www.91在线| 免费看美女被靠到爽的视频 | 视频在线观看高清免费看 | 91精品啪在线观看国产老湿机 | 短篇同学新婚h系列小说 | 精新精新国产自在现 | 青丝视频免费版在线看 | 国产一区二区三区日韩 | 亚洲免费国产 | 婚色阿花在线全文免费笔 |