• django-路由系统


    2.0版本写法
    from django.urls import path urlpatterns = [ path('articles/2003/', views.special_case_2003), path('articles/<int:year>/', views.year_archive), path('articles/<int:year>/<int:month>/', views.month_archive), path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail), ]


    from django.conf.urls import url
    
    from . import views
    
    urlpatterns = [
        url(r'^articles/2003/$', views.special_case_2003),
        url(r'^articles/([0-9]{4})/$', views.year_archive),
        url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
        url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
    ]


    1.urlpatterns按顺序往下匹配,成功匹配不在往下继续
    2.若要从URL中捕获一个值,只需要在它周围放置一对圆括号(分组匹配)。

    2.urls.py(路由系统)
    1.正则匹配的模式
      1.分组匹配 能够在调用视图函数的时候能够传递位置参数

    urlpatterns = [
        url(r'^articles/2003/$', views.special_case_2003),
        url(r'^articles/([0-9]{4})/$', views.year_archive),
    会传给视图函数一个4位数字的位置参数


      2.分组命名匹配,能够在调用视图函数的时候能够传递关键字参数
    urlpatterns = [
        url(r'^articles/2003/$', views.special_case_2003),
        url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
    会传递给视图函数一个4为数字的关键字参数,相当于 year=



    3.include 分级路由
    请求的顺序:
    请求——>project/urls.py-->-->app/urls.py-->app/views.py
    在URL里面

    url(r'^app01/', include(app01_urls, namespace="app01"),),

    url匹配规则的别名

    1.起别名是为了增加代码的健壮性
    2 用法
      1)在views.py中如何根据别名找到url
        from django.urls import reverse
        url=reverse('别名')
      2)在模板语言中如何根据别名找到url
        {% url ‘别名’%}
      
     3。带参数的url如何反向生成?
      1.位置参数
        1)在views.py中:
          reverse('别名',args=(参数1,参数2,。。。))
        2)在模板语言中:
          {% url '别名' 参数1,参数2.。。 %}
      2.关键字参数
        1).在views.py中:
          reverse('别名',kwargs={'k1':参数1,。。。})
        2)在模板语言中:
          {% url ‘别名’ 参数1,参数2.。。%}
      
      
      4 namespace(命名空间)
        
    # 使用include语法,将其他的urls.py 包含进来
    url(r'^app01/', include(app01_urls, namespace="app01"),),
    url(r'^app02/', include(app02_urls, namespace="app02")),
    1. 位置参数
    1. 在views.py中:
    reverse("命名空间:别名", args=(参数1, 参数2, ...))
    2. 在模板语言中:
    {% url "命名空间:别名" 参数1, 参数2... %}


    2. 关键字参数
    1. 在views.py中:
    reverse("命名空间:别名", kwargs={"k1":参数1, ...})
    2. 在模板语言中:
    {% url "命名空间:别名" 参数1, 参数2... %}


    目的就是获得唯一的url
























































  • 相关阅读:
    spring
    23种设计模式
    get getline
    ping
    Android四大组件
    C++数据结构
    玩转windows便签
    [JavaScript]再谈 this
    [JavaScript]面向对象编程浅析之XJB讲
    [JavaScript]MVC浅析
  • 原文地址:https://www.cnblogs.com/zhaoweihang/p/9200646.html
Copyright © 2020-2023  润新知