• django_路由匹配


    path:完全匹配

    存在如下demo:

    #urls.py
    path(r'articles/<year>/<int:month>/<slug:slug>/',views.special)
    
    #views.py
    
    def special(request,year,month,slug):
        return HttpResponse('year:%s'%year)

    如上,浏览器中输入:http://127.0.0.1:8000/articles/1d/23/xx/  页面展示 year:1d

    其中year没有指定类型,所以可以输入1d,如果month字段不是整型,则404,参数传递要用尖括号括起来,然后在对应的视图函数中,需要传递对应的尖括号中的参数名字。

    所有类型限制如下:

    1. str:匹配任何非空字符串,但不含斜杠/,如果你没有专门指定转换器,默认使用该转换器
    2. int:匹配0和正整数,返回一个int类型
    3. slug:可理解为注释、后缀、附属等概念,是url拖在最后的一部分解释性字符。该转换器匹配任何ASCII字符以及连接符和下划线,比如building-your-1st-django-site
    4. uuid:匹配一个uuid格式的对象。为了防止冲突,规定必须使用破折号,所有字母必须小写,例如075194d3-6885-417e-a8a8-6c931e272f00。返回一个UUID对象;
    5. path:匹配任何非空字符串,重点是可以包含路径分隔符’/‘。这个转换器可以帮助你匹配整个url而不是一段一段的url字符串。要区分path转换器和path()方法。

    re_path url:正则匹配

    django 2.0以上的版本中推荐使用url,而且url返回的就是一个re_path

    from django.conf.urls import url
    demo如下:
    #urls.py
    url(r'^articles/[0-9]{4}/$', views.reg_view),
    url(r'^(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$',views.special),
    
    
    #views.py
    def special(request,year,month,slug):
        return HttpResponse('year:%s'%year)
    
    def reg_view(request):
        return HttpResponse('路由正则匹配成功')

    第一条url中没有传递参数,直接使用正则表达式进行匹配,如果输入的满足该表达式,则对应视图中的reg_view逻辑

    第二条url中传递了参数,对某一个参数需要用圆括号括起来,然后加上?P<>,尖括号中是参数名字,然后同完全匹配一样,在视图函数中要有同名的参数进行传递,这里就不用同完全匹配那样指定类型了

  • 相关阅读:
    java 网络编程入门
    正确、安全地停止SpringBoot应用服务
    spring boot application.properties文件外部配置
    logback
    基本排序算法的总结
    jqury属性操作,特殊效果
    click事件和jquery选项卡
    jquery加载方式,选择器,样式操作
    css之定位
    css中设置background属性
  • 原文地址:https://www.cnblogs.com/alantammm/p/13921580.html
Copyright © 2020-2023  润新知