URL(Uniform Resoure Locator)統一資源
定位符是對可以從互聯網上得到的資源的位置和訪問方法的一種簡潔的表示,
是互聯網上標准資源的地址。互聯網上的每個文件都有一個唯一的URL,
它包含的信息指出文件的位置以及瀏覽器應該怎么處理它。
[1] 它最初是由蒂姆·伯納斯·李發明用來作為萬維網的地址。
現在它已經被萬維網聯盟編制為互聯網標准RFC1738了。
url格式
URL解釋:
schema://host[:port#]/path/.../[?query-string][#anchor]
schema:指定使用的協議(例如:http, https, ftp)
host:Http服務器的IP地址或者域名
port:端口號,http默認是80端口
path:訪問資源的路徑 query-string:發送給http服務器的數據
anchor:錨點
URLs.py的作用
URL配置(URLconf)就像是Django所支撐網站的目錄。
它的本質是URL模式以及要為該URL模式調用的視圖函數之間的映射表。
以這樣的方式告訴Django,對於這個URL調用這段代碼,對於那個URL調用那段代碼。
url的加載就是從配置文件中開始。
URLs.py 示例
from django.conf.urls import url
from django.contrib import admin
from hello import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^hello/$',views.hello),
url(r'^books/$',views.books,name=“books”),
]
url解析過程
Django會從urlpatterns里順次讀取元素,每個元素是方法url調用后返回的結果。
django傳給url路由要處理的地址,該地址是被去掉主機地址及之后的一個“/”的剩余部分:
例如: http://127.0.0.1:8000/hello/ 經處理后的剩余部分就是:
hello/ 然后把該剩余部分與url方法的第一個參數進行正則匹配,
如何匹配成功,則執行url的第二個參數指定的方法
(該方法一般放在views.py中,主要功能的實現具體業務邏輯)。
url函數定義
Def url(regex, view, kwargs=None, name=None)
Regex: 傳入的url要匹配的正則表達式
View:一個可調用的對象或一個url類型的列表或元組
Kwargs:關鍵字參數,必須是一個字典數組,可以通過這個參數傳遞更多的信息給view
Name:關鍵字參數,是一個字符串,用於給regex匹配的字符串取名字
url常用正則表達式
url(r'^hello/$',views.hello),
^表示以什么什么開頭
$表示以什么什么結尾
^$聯合使用表示必須完整匹配
注意:末尾的/是必須的,雖然瀏覽器會根據情況幫助自動添加/,
但是不要以為不輸入就等於不添加。
url常用正則表達式
模式匹配示例:
url(r‘books/python/$', views.books_python) # books/python
url(r‘books/php/$', views.books_php) # books/php
url(r‘books/([a-zA-Z0-9]*)/$', views.books)
url(r‘books/([\S\s]*)/$', views.books)
參數傳遞示例:
url(r‘books/\d{2}/$', views.books) # books/66
url(r‘books/(?P<id>\d{2})/$', views.books) #books/10 books(req,id=10)
url(r‘books/(?P<id>\d{2})/(?P<ver>\w+) /$', views.books)
#test/20/3 books(req,id=20,ver=3)
Include的作用
方便項目管理:
一個project有一個總的urls.py,各個app也可以自己建立自己的urls.py,
不過都需要使用include()函數在project的urls.py文件進行注冊。
kwargs的作用
傳遞更多信息給view
name的作用
給一個匹配的url地址取名字
一般用於模板
也可以使用reverse進行頁面重定向
