欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Django 系列篇(五):路由篇(中)

系列導讀

01. Django 系列篇(一):Hello World!

02. Django 系列篇(二):配置篇(上)

03. Django 系列篇(三):配置篇(下)

04. Django 系列篇(四):路由篇(上)

1. 路由變量

上面 Django 定義的路由只能代表一個(gè)頁(yè)面,為了使路由指向多個(gè)不同的頁(yè)面,可以在路由中定義變量

變量類(lèi)型有:整形、字符串、slug、uuid  4 種

其中:

1、字符串:匹配任何非空字符串,但不包含斜杠,默認使用字符串類(lèi)型

2、整形:匹配任何非負數

3、slug:匹配 ASCII 字符以及連接線(xiàn)和下劃線(xiàn),可理解為注釋、后綴或附屬等概念

4、uuid:匹配一個(gè) uuid 格式的對象,為了防止路由沖突,所有字母必須小寫(xiě),然后用 連接起來(lái),比如:0755-2323-1111-abcd-3f3g

以匹配年、月、日的視圖為列

首先,在 App 的路由集合下新增一條路由信息

# urls.py(App)

# 指向日期視圖函數
# year:字符串
# month:整形
# day:slug類(lèi)型
path('<year>/<int:month>/<slug:day>', views.ymd_with_params),

其中,使用變量符號 <> 為路由設置變量,: 之前代表變量類(lèi)型,: 之后代表變量名;如果沒(méi)有指定變量類(lèi)型,默認為字符串類(lèi)型

然后,在 App 下的 view.py 文件中編寫(xiě)路由定義的視圖函數

視圖函數中包含 4 個(gè)參數,其中第 1 個(gè)參數為:request,其他 3 個(gè)參數為:路由信息包含的 3 個(gè)變量

需要注意的是,視圖函數的參數必須和路由信息包含的變量一一對應,否則會(huì )拋出異常

# views.py(App)

def ymd_with_params(request, year, month, day):
    """
    日期視圖函數
    :param request:
    :return:
    """

    result = str(year) + '/' + str(month) + "/" + str(day)
    return HttpResponse(result)

最后運行項目,在瀏覽器下輸入路由地址,比如:http://127.0.0.1:8000/2020/04/20

2. 額外變量

除了在路由地址中設置變量外,還可以為 path 函數追加一個(gè)變量

需要注意的是,變量必須以字典的形式表示,參數值不限制數據格式,可以是實(shí)體對象,也可以是基本數據類(lèi)型

# urls.py(App)

# 新建一個(gè)路由地址airpython
# 指向視圖函數with_extra_params
# 并帶有參數,參數通過(guò)字典定義
path('airpython', views.with_extra_params, {'extra_param''AirPython'}),

然后,在視圖函數 with_extra_params() 中來(lái)使用這個(gè)參數

# views.py(App)

def with_extra_params(request, extra_param):
    """
    帶額外的參數
    :param request:
    :param extra_param:
    :return:
    """

    return HttpResponse('Welcome to attention ' + extra_param)

3. 正則表達式

正則表達式可以限制路由地址中的變量取值范圍,對路由變量進(jìn)行截取與判斷,使得路由匹配更加地精確合理

路由正則表達式使用函數 re_path 來(lái)定義,以小括號 ( ) 為一個(gè)部分單位,每個(gè)小括號以 ?P 開(kāi)頭,加入正則表達式,最后通過(guò)斜杠 / 隔開(kāi)即可

上面的路由地址可以通過(guò)正則表達式改寫(xiě)為:

# 路由正則表達式
# 函數:re_path(路由地址,視圖函數)
# 路由地址:year、month、day為3個(gè)參數
re_path('(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2}).html',views.ymd_with_params1)

其中,用 <> 包住的 year、month、day 為 3 個(gè)變量

接著(zhù)定義視圖函數,運行項目,就可以通過(guò)地址訪(fǎng)問(wèn)到視圖函數渲染的內容。

def ymd_with_params1(request,year, month, day):
    """
    日期視圖函數(正則表達式)
    :param request:
    :param year:
    :param month:
    :param day:
    :return:
    """

    result = str(year) + '/' + str(month) + "/" + str(day)
    return HttpResponse(result)

4. 命名空間

隨著(zhù)網(wǎng)頁(yè)的數目增加,維護會(huì )有一定難度,因此,Django 可以為每一條路由設置命名空間,方便我們更好地管理網(wǎng)站

通過(guò)查看源碼,發(fā)現路由函數 include() 有兩個(gè)參數,分別是:arg、namespace,其中 namespace 代表路由的命名空間,為可選參數;arg 參數類(lèi)型為字符串或元組(長(cháng)度為:2 ),作用是指向項目某一個(gè) App 的 urls.py 文件

需要注意的是:

1、如果路由函數不存在命名空間,arg 的數據格式是字符串,比如:first_app.urls,指向 first_app 這個(gè) App 的 urls.py 路由文件

2、如果路由函數命名空間存在,arg 的數據格式一定要設置為長(cháng)度為 2 的元組,比如:('first_app.urls','first_app'),其中第一個(gè)參數為目標 App 的 urls.py 文件,第二個(gè)參數一般設置為 App 的名稱(chēng) 

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    # 指向admin后臺系統的路由文件
    path('admin/', admin.site.urls),

    # 指向first_app的路由文件:urls.py
    # namespace:設置路由的命令空間
    path('', include(('first_app.urls''first_app'), namespace='first_app')),

    # 指向本App的路由文件:urls.py
    path('second/', include(('second_app.urls''second_app'), namespace='second_app')),
]

5. 路由名稱(chēng)

在 Django 中,路由名稱(chēng)是對一個(gè)路由進(jìn)行命名,作用是在視圖、模塊里使用路由命名生成路由地址,在后期路由地址發(fā)生變更的時(shí)候,方便維護和更新

路由定義列表中,可以為函數 path() re_path() name 屬性指定一個(gè)值,相當于給路由指定了名稱(chēng)

urlpatterns = [
    # 指向視圖函數index
    # 添加路由name屬性
    path('', views.indexname='index'),
]

不同 App 中的路由命令可以重復使用,但是在同一個(gè) App 內,最好保證路由名稱(chēng)的唯一性。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Django(URL、Views、Template)
Django博客教程(五):處理 http 請求完全解讀
編寫(xiě)你的第一個(gè) Django 應用,第 3 部分 | Django 文檔 | Django
深入理解django的Urls分發(fā)
django基礎
Django 視圖與網(wǎng)址
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久