• Django 路由详解(二)


     路由变量

    有时候一个路由可以代表多个不同的页面,如果每个页面都要设置一个路由配置,这种做法明显不可取,在Django在定义路由时,可以对路由设置变量,使路由具有多样性。

    路由的变量类型有字符类型、整形、slug和uuid,最为常用的是字符类型和整型。各个类型说明如下:

    • 字符类型:匹配任何非空字符串,但不含斜杠。如果没有指定类型,就默认使用该类型。
    • 整型:匹配0和正整数。
    • slug:可理解为注释、后缀附属等概念,常作为路由的解释性字符。可匹配任何ASCII字符以及连接符和下划线,能使路由更加清晰易懂。比如网页的标题是“13岁的孩子”,其路由地址可设置为“13-sui-de-hai-zi”。
    • uuid:匹配一个uuid格式的对象。为了防止冲突,规定必须使用“-”并且所有字母必须小写,例如:0b1e7883-5ab4-4b71-8d3c-56bc71b680a2

    在路由中,使用变量符号<>可以为路由设置变量,在括号里面以冒号划分为两部分,冒号前面为变量的数据类型,冒号后面为变量名,如果没有设置变量的数据类型,则默认为字符串类型。

    以下代码是带有字符串、整型和slug的变量:

    #myapp urls.py
    from django.urls import path,re_path
    # from myapp.views import myapp_index,new
    from . import views
    
    urlpatterns = {
        #配置myapp应用路由地址,指向myapp的views.py中的视图函数myapp_index
        path("",views.myapp_index),
        path("new/",views.new),
        path("<year>/<int:month>/<slug:day>",views.timeView)
    }
    • <year>: 变量名为year,数据类型为字符串类型,与<str:year>含义一样。
    • <int:month>: 变量名为month,数据类型为整型。
    • <slug:day>: 变量名为day,数据类型为slug。

    在views.py中的视图函数timeView代码如下:

    from urllib import response
    from django.shortcuts import render
    from django.http import HttpResponse
    # Create your views here.
    
    def timeView(request,year,month,day):
        return HttpResponse(str(year)+"/"+str(month)+"/"+str(day))

    其中参数year、month、day的参数值分别从路由地址所设置的变量<year>、<int:month>、<slug:day>而来.

    在浏览器上的效果如下:

     修改浏览器上的地址,再次访问效果如下:

    路由可选变量

    路由可选变量是在访问地址时,可以不用传变量。代码如下:

    #myapp urls.py
    from calendar import month
    from django.urls import path,re_path
    # from myapp.views import myapp_index,new
    from . import views
    import time
    
    
    urlpatterns = {
        #配置myapp应用路由地址,指向myapp的views.py中的视图函数myapp_index
        path("",views.myapp_index),
        path("new/",views.new),
        path("<year>/<int:month>/<slug:day>",views.timeView),
        path("time/",views.Option_variable,{"current_time":time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time())) }),
    }
    • 参数只能以字典的形式表示。
    • 设置的参数只能在视图函数中读取和使用。
    • 字典的一个键值对代表一个参数,键值对的键代表参数名,键值对的值代表参数值。
    • 参数值没有数据格式限制,可以为某个实例对象、字符串或列表(元组)等。

     在浏览器中访问效果如下:

  • 相关阅读:
    Locust性能测试-环境准备与基本使用 转自:悠悠
    Locust性能测试_先登录场景案例
    python_协程
    python_进程池以及线程池
    python_并发与通信
    python_进程与线程的补充
    python_并行与并发、多线程
    Hash算法:双重散列
    AVL树的插入和删除
    查找最小生成树:普里姆算法算法(Prim)算法
  • 原文地址:https://www.cnblogs.com/JcHome/p/16069711.html
Copyright © 2020-2023  润新知