中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Django中url與path及re_path有什么區別

發布時間:2021-03-15 10:51:04 來源:億速云 閱讀:451 作者:TREX 欄目:開發技術

這篇文章主要講解了“Django中url與path及re_path有什么區別”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Django中url與path及re_path有什么區別”吧!

Django中url與path及re_path區別

初學者一般不能分清兩者的區別,所這簡單介紹下兩者.首先,url是Django 1.x中的寫法,p在Django2.1中,開始舍棄django1.x中的url寫法。

在django2.x中,描寫url配置的有兩個函數path和re_path.re_path()函數可以看做是django 1.x中得url函數,即可以在路徑中使用正則.

一.path和url的區別:

django.urls path
django.conf.urls url

path與url是兩個不同的模塊,效果都是響應返回頁面, path調用的是python第三方模塊或框架,而url則是自定義的模塊,如Views下的def函數對應你url中的參數值.

例如:

 url(r'^login',views.login),
 def login(request):
  return render(request,'login.html')

1、url

在settings.py文件中有一個ROOT_URLCONF設置,設置的是在訪問網址時通過哪一個url文件去匹配所請求的網址

url參數

url或者re_path要復雜一些 (r'^blog/(?P[0-9]{4})/′)首先需要開始符和結尾符 ') 首先需要開始符^和結尾符 ′)首先需要開始符和結尾符,參數匹配一個 ()就是一個匹配參數,

(?P<匹配的字段名>正則表達式)

進行匹配是不包括get或者post請求方式的參數及域名比如www.qq.com/blog?num=1并不會匹配?后邊的字符

可以給request參數設置一個默認值,最常見的分頁url,比如

 urlpatterns=[
   url(r'^page/$',views.page),
   url(r'^page(?P<num>[0-9]+)$',views.page)
 ]
 
 #views 
 def page(request,num='1'):
   pass

自定義錯誤頁面關鍵字handler400=blog.views.page_no_find

 #urls.py
 …
 handler400=blog.views.page_no_find

2、path

參數的使用方法path(‘blog/str:string/') 簡單了很多,就是尖括號,前邊是str代表參數的類型,后面代表參數的名稱

path參數類型

捕獲url中的參數需要用到尖括號<> 指定尖括號中的值類型比如int:astr:link這個轉換器還有許多類型比如:

int 匹配0和正整數

str 匹配任何空字符串但不包括/

slug 可理解為注釋 匹配任何ascii碼包括連接線和下劃線

uuid 匹配一個uuid對象(該對象必須包括破折號—,所有字母必須小寫)

path 匹配所有的字符串 包括/(意思就是path前邊和后邊的所有)

3.re_path

如果遇上路徑和轉換器語法都不足以定義的URL模式,那么就需要使用正則表達式,這時候就需要使用re_path(),而非path()。

舉例:傳遞 數字結尾的參數

re_path(r'(\d+)/$',views.peopleList,name='peopleList'),

二、python3中使用django2,常見設置path問題

1.Django2中使用

在python3中使用django2的時候,在設置urls的時候,會遇到一些坑。這里做一下記錄。

系統的urls.py里,在1.X的時候,都是采用的url方式。如下

url(r'^', include("test1.urls")),

在2.0中,它推薦使用的是path模塊,所以這里就改寫一下。引包

 from django.urls import path
 
 path('', include("test1.urls")),

注意:

如果要使用正則,則要引入re_path,from django.urls import path, re_path

這里面的正則寫法,有點意思,一定要使用()把正則包起來,然后用?P正式表達式 這種形式來表式

2.APP中使用path

1.x里面的寫法是

url(r'^page=(\d+)&key=(\w+)$', views.detail, name=”detail”),

現在的寫法

re_path('page=(?P<page>\d+)&key=(?P<key>\w+)', views.detail, name="detail"),

這樣一對比就能明白了吧,使用的鏈接是http://127.0.0.1:8000/page=12&key=abc

3.系統的urls.py里的namespace的問題

1.x中寫法

url(r'^', include("test1.urls", namespace='test1')),

可是在2.0中你這么寫,會報錯,說什么app_name的,這個自己可以看一下,怎么解決呢,其實很簡單,只要在自己項目urls.py中加上這句就行了.如果不加的話可能報錯,

app_name = 'test1'(你的APP名)

注:

使用url也是可以的,為了簡便起見,盡量使用符合版本的字段,另外在寫路徑時應該嚴格按照語法,比如'^' 和/$就不能缺,不能前面寫url,括號里面確按照path的寫法,這樣很容易出錯,到了關鍵時刻,很難定位問題點,很浪費時間.

感謝各位的閱讀,以上就是“Django中url與path及re_path有什么區別”的內容了,經過本文的學習后,相信大家對Django中url與path及re_path有什么區別這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

内乡县| 山西省| 剑川县| 舒城县| 龙胜| 元谋县| 通海县| 广水市| 新丰县| 连江县| 库车县| 大邑县| 双城市| 榕江县| 清水河县| 唐山市| 奉新县| 称多县| 北宁市| 廉江市| 博客| 普洱| 凤台县| 梁平县| 汕尾市| 和硕县| 巴林右旗| 富阳市| 涡阳县| 康平县| 长乐市| 焉耆| 虹口区| 永安市| 吕梁市| 正镶白旗| 阳泉市| 湟源县| 寿宁县| 中阳县| 黔西县|