django的路由系统:url

时间:2021-10-04 04:34:03

在url文件中的常用配置:

  Django 1.1版本
  from django.conf.urls improt url

    urlpatterns=[

        url(r'^ 正则表达式 $',views视图,参数,别名),

      ]

  Django 2.0版本以后

   from django.urls improt path

    urlpatterns=[

        path('正则表达式',views视图,参数,别名),

      ]

分组:

  在正则表达式中加( )   如:  url(r'^del_publisher/(\d+)', views.del_publisher),

有名分组:

  在正则表达式中加( ?P<名字>)  如:  url(r'^blog/(?P<year>\d{4})/[1-9]{2}/$', views.blog)

  注意!!!  从URL上捕获的参数都是字符串类型

引用其他应用中的urls.py :  include的位置一样都在conf.py文件内

    用django 1.1版本中的include

      from django.conf.urls import url,include

        urlpatterns=[

           url(r'^app01/$',include('app01.urls')),

          ]

    用django 2.0版本以后的include

      from django.urls improt path,include

        urlpatterns=[

           path('app01/',include('app01.urls')),

          ]

url命名和反向解析:

  1,命名: 在别名位置写入name='名字' 

        如:url(r'^publisher_list/', views.publisher_list, name='publisher'),

  使用:

    不带参数:

        1,在视图中使用(views.py文件);

            from django.urls import reverse

            reverse('名字')    备注:通过名字获得对应的路径

        2,在模板中使用(HTML.py文件):
            {% url '名字' %}    备注:通过名字获得对应的路径

    带有参数(分组):

        如: url(r'^blog/(\d{4})/([1-9]{2})/$', views.blog, name='blog')

        1,在视图中使用:

            from django.urls import reverse

            revrese('名字',args=('参数','参数'))  备注:获得路径,并将参数改成自己输入的  args是一个元组,如果只有一个值需在参数后加逗号.

        2,在模板中使用:

            {% url '名字' '参数' '参数'  %}    备注:参数可以有多个,用空格隔开
     带有参数,并有命名分组:

        如: url(r'^blog/(?P<year>\d{4})/(?P<month>[1-9]{2})/$', views.blog, name='blog')

        1,在视图中使用:

            reverse('名字',kwargs={'命名':'参数','命名':'参数'})

            也可以用: revrese('名字',args=('参数','参数'))

        2,在模板中使用:

            {% url '名字' 命名='参数' 命名='参数'%}

namespace命名空间模式:  即使不同的APP使用相同的url名称,也不会出错.

    定义: url(r'^app01/$',include('app01.urls',namespace='app01')),

       在app01中的url   url(r'^home/$', views.home, name='home'),

    使用:

      视图:

        reverse ('app01:名字')    名字如:home

      模板:

        {% url 'app01:名字' %}    名字如:home