Django 学习(3) —— URL 之概念、匹配、path语法、地址转换器、include()函数

一、概念

       URL (统一资源定位符)

       组成语法格式:  protocol://hostname[:port]/path/[parameter][query]#fragment

                       protocol:协议,包括 http、https、ftp等等

                       hostname:IP地址

                       port:端口

                       path:路径

                       parameter:参数

                       query:查询

                       fragment:锚点

        示例:https://baike.baidu.com/item/Python%E7%BC%96%E7%A8%8B/2142769?fr=aladdin#3

 

二、URL

1.Django 中URL如何匹配的?

       Django中的URL匹配规则:

        url先匹配django项目中的url文件,然后再去匹配应用app中的url文件。逐级匹配。

          例如在项目中,设置匹配空' ' ——>  随后会匹配APP应用中的 url。

         **  tips:      path中的“/” 斜杠不能省略

 

  2.Path路径语法

         ** tips :Django 2.1(包含2.1)之前,path语法使用url表示

       

         先导入包   from   django.urls   import   path 

         path标准语法:  path(,,[name=None,**kwargs])

                                   route:表示路径,需要匹配的路径,从端口号后开始到最后一个 “/”为止

                                   view:表示需要调用的视图函数,必须是一个函数;如果是类的话,要用as_view()转换为函数

                                   name:别名,为方便其他地方调用和避免重复写长串地址,为view起一个别名

                                   *kwargs:字典 ,具体使用方法后面会说到。

 

    3.Django 地址转化器

                例如:很多网址   https://news.163.com/19/0610/08/EHA1MEQN000189FH.html

                                            https://news.ifeng.com/c/7nNydk1BHbE

           如果网页数量过多,URL匹配时,path路径写的工作量将会巨大

           为较少输入路径的工作量,使用地址转换器,以变量的方式转换地址

           格式:  path("route/",,name,**kwargs)

                        path("route/",,name,**kwargs)

           共五种地址转换器:(1)string    匹配非空字符串,除去“/”,默认的路径转换器

                                          (2)int   匹配0或正整数         ( tips:  format加法:    format(number1+number2)  )

                                          (3)slug  由ASCII码组成或数字组成,通过 “-”连接的字符串

                                          (4)uuid   uuid格式的字符串         

                                          (5)path   匹配非空字符串 ,包含“/”     例如  http://127.0.0.1:8000/index/j/k/w  

                                                                                                           默认的string不能匹配包含"/"部分,会抱错

                                               Django 学习(3) —— URL 之概念、匹配、path语法、地址转换器、include()函数_第1张图片

              这五种地址转换器,各有其用途,后面会讲到

 

     4. URL  include函数

               创建项目和应用APP时,项目中有url文件,应用中没有url文件。

               当一个项目中有多个应用,而应用中又有多个url,此时如果把全部写在项目的url文件中,将会十分难于管理和维护。

               所以需要include函数的方式进行管理

               (1)使用时,先在应用中创建URL文件并编写;

               (2)然后在项目的URL文件中,导入include函数。( from  django.urls   import  path,include)

               (3)项目URL文件中,导入应用APP的URL文件,然后编写path时:

                              path(' ',include(urls),name='XXX')

 

              ***problems : 我在6.10号时,尝试创建两个应用,并在同一项目中引入它们的URL,使用include处理

                                       发现include只匹配了最后一个导入的应用的url,并不能全部匹配。

                                       具体原因尚不明白

             include()函数语法:有三种

                      (1) include(module,namespace=None)     示例:

                      (2) include(pattern_list)      示例:path()或者re_path()清单

                   

Django 学习(3) —— URL 之概念、匹配、path语法、地址转换器、include()函数_第2张图片

                      (3) include((pattern_list,app_namespace),namespace=None)

                                     示例:

                       参数释义: module:一个模型文件

                                         namespace:命名空间

                                         pattern_list:必须是一个可迭代的path()或者re_path()清单

                                         app_namespace:app命名空间           

                      

                     

你可能感兴趣的:(Django)