Django之簡單路由配置(B站學習筆記)

Django中涉及訪問路由的主要是兩個文件:urls.py和views.py,分別爲路由函數和對應的視圖函數:

urls.py:

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

from study_Django import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('timer/', views.timer),   # views.timer(request)

    # 路由配置:      路徑-------->視圖函數
    re_path(r'^test/2020/$', views.test_2020),
    re_path(r'^test/([0-9]{4})/$', views.year_test),  # views.year_test(request,2021) 路徑增加一個組,則會多一個參數
    re_path(r'^test/([0-9]{4})/([0-9]{2})/$', views.month_test),    # views.month_test(request,2021,06)

]

對應的views.py:

from django.shortcuts import render,HttpResponse

# Create your views here.


def timer(request):

    import time
    ctime = time.time()
    return render(request, 'timer.html', {"date": ctime})


def test_2020(request):


    return HttpResponse("test_2020")


def year_test(request,year):


    return HttpResponse(year)


def month_test(request,year,month):


    return HttpResponse(year+'-'+month)


運行Django項目後,會匹配默認url後面的參數,匹配成功則運行對應的視圖函數,在re_path()中的第一個參數即爲路徑匹配項,可以使用正則匹配,路徑每增加一個組,對應的視圖函數就會多傳入一個參數,

網頁運行結果如圖:

匹配第一個test_2020:
http://127.0.0.1:8000/test/2020/
在這裏插入圖片描述
匹配第二個year_test:
http://127.0.0.1:8000/test/2021/
在這裏插入圖片描述
匹配第三個month_test:
http://127.0.0.1:8000/test/2021/06/

在這裏插入圖片描述
也可以使用path()進行匹配,運行後傳入一個參數request,增加一個html文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>


    <script src="/static/jquery-3.1.1.js"></script>
    <link rel="stylesheet" href="/static/app02/timer.css">


</head>
<body>

<h4>當前時間:{{ date }}</h4>
<script src="/static/app02/timer.js"></script>


</body>
</html>

timer.css:

h4{
            color: red;
        }

timer.js:

$("h4").click(function(){
        $(this).css("color": "yellow")
    })

需要將jquery-3.1.1.js文件放入static文件夾(static爲新建的靜態文件夾,詳細可見上一篇靜態文件配置博客)下,
運行http://127.0.0.1:8000/timer/之後的結果:
在這裏插入圖片描述

注意:
1.若要從URL中捕獲一個值, 只需要在它周圍放置一對圓括號;
2.不需要添加一個前導的反斜槓,因爲每個URL都有。例如,應該是” ^ test而不是^/test;
3.每個正則表達式前面的r是可選的但是建議加上。它告訴Python這個字符串是“原始的"----字符串中任何字符都不應該轉義。

路由控制之有名分組
將urls.py修改爲:

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

from study_Django import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('timer/', views.timer),   # views.timer(request)

    # 路由配置:      路徑-------->視圖函數
    re_path(r'^test/2020/$', views.test_2020),
    re_path(r'^test/([0-9]{4})/$', views.year_test),  # views.year_test(request,2021) 路徑增加一個組,則會多一個參數
    # re_path(r'^test/([0-9]{4})/([0-9]{2})/$', views.month_test),    # views.month_test(request,2021,06)
    re_path(r'^test/(?P<y>[0-9]{4})/(?P<m>[0-9]{2})/$', views.month_test),  # views.month_test(request,y=2021,m=06)

]

這樣在對應的views中視圖裏面就不會存在參數位置的限定:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章