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中视图里面就不会存在参数位置的限定:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值