Django學習記錄(2)Django中的路由管理

2021-10-07 16:15:37 字數 2900 閱讀 6297

django的路由管理,由應用檔案下的urls.py檔案進行管理

所有的路由都放置在urlpatterns中

每乙個路由在定義的時候,需要通過路由函式來定義

路由函式,常見的有path,url

path(router,view,kwargs,name) 普通路由的定義

url(router,view,kwargs,name) 支援正規表示式

兩者在定義router上有所區別

- 普通路由

用path函式定義,router是乙個普通的字串。

# 在urls.py中定義到乙個跳轉到登入頁面的路由

from

.import views.py

path(

"login"

, views.login,name=

"login"

)# 在views.py檔案中寫login()函式

)# 完成最基本的路由週期

- 引數路由(動態路由)

用path函式定義,router在定義路由的時候使用<[type:]key>設定

# 帶參路由

path(

"detail/"

, views.detail, name=

"detail"

)# 如果不加type限制 pk預設的格式是字串

# 帶參檢視函式

defdetail

(request, pk)

:return httpresponse

django內建了5個型別轉換器converters.py

str預設的,不能匹配 /

int代表整數

slug匹配數字字母下劃線和中劃線

uuid匹配符合uuid格式的字串

path匹配所有,包括 /

此外,還可以自定義型別轉換器

例如定義乙個只匹配年份的路由:

1.在應用包下建立乙個converters.py檔案

from django.urls.converters import intconverter

# 繼承intconverter父類

class

year_converter

(intconverter)

: regex = r"(19|20)\d"

2.之後在__init__.py檔案中匯入converters.py和django的converters的型別註冊函式

from

.import converters

from django.urls.converters import register_converter

# 將自定義的轉換器進行註冊

# 第乙個引數代表自定義的型別轉換器,第二個引數代表名字

register_converter(converters.year_converter,

"year"

)# 在urlpatterns中使用該型別轉換器

urlpatterns =

[path(

"", views.year)

]

在views.py中定義year函式

"傳入的年份是{}"

.format

(year)

)- 正則路由

用url函式定義,router是乙個支援正規表示式的字串

在urls.py中匯入包from django.urls import url

用法跟path類似 常用於模糊匹配

正則路由帶引數:

url(r"^detail/(?p\d+)$", views.detail, name="detail")

- 分布式路由

用於分布將當前路由轉到各個模組的urlpatterns進行分布式處理

from django.conf.urls import include

path("cart", include(cart.urls))

- 路由的反向解析

根據路由的name屬性查詢路由的過程

在模板中進行路由的反向解析

在檢視函式中進行路由的反向解析

from django.shortcuts import reverse

redirect(to=

"/")

redirect(to=reverse(

'router_name'))

# 帶參路由反向解析 例:

redirect(to=

'/next/11'

)redirect(to=reverse(

'next'

, args=(11

,12))

)

django學習記錄

django的處理流程 當使用者發出http請求,urlhandler接收使用者請求,根據開發人員設定的路由規則匹配相應的處理類 根據請求的型別判斷呼叫的http方法 如果需要連線資料庫,views中的函式將會呼叫models的方法,否則直接去template中取出html頁面直接返回 呼叫mode...

Django開發記錄 2

配置view.py檔案 新增url,配置urls.py檔案 import blog.views as bv urlpatterns path admin admin.site.urls path index bv.index 通過include方法,匯入外部檔案。修改myblog.urls.py f...

django學習記錄 RequestContext

官方文件 requestcontext是context的子類,跟context有一些區別 requestcontext強迫第乙個引數是 request 第二個是乙個構造 context 物件用的字典,第三個是可選的,是乙個自定義的 context processer 上下文處理器 requestco...