Django url (路由)

Posted tf511

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django url (路由)相关的知识,希望对你有一定的参考价值。

**1、路由的基本使用:**

?    #url 是个函数,有四个参数,第一个参数要传正则表达式,第二个参数传函数内存地址,第三个传默认参数,第四个传路由别名

?    url(r^yaopipqideneirong/article/aa.html$,views.test),

?    -路由从上往下匹配,一旦匹配成功,后面就不继续匹配了

**2、路由的无名分组**

?    url(rtest2/(d+)/(w+)$,views.test2),

?    无名分组分出几个值,试图函数就要接受几个值(位置参数形式传过来的)

**3、路由的有名分组(用的比较多)**

?    url(r^test3/(?P<id>d+)/(?P<name>w+)$,views.test3),有名分组分出几个值,视图函数就要接受几个值(按关键字传入,位置可以打乱)

**4、有名和无名不能混着用**

**5、在settings中配置(以后项目,一般不用动)**

?        默认是true,浏览器浏览的时候,默认加上斜杠

?        如果是false,浏览器默认不会加 /

?        APPEND_SLASH=False

**6、路由分发**

?    1、在 主 路由中导入 include

?        -from django.conf.url import include

?    2、在主路由中:

```python
        url(r"^app02/",include("app02.urls")),
        url(r"^app03/",include("app03.urls")),
```

?    3、在不同app中新建一个urls

?         from app02 import views

?        urlpatterns=[

?            url(r^test/,views.test), ]

?    4、如果浏览器输入app02/test/,就会响应到app02下views中的test去执行

**7、反向解析:**

?    干什么用?

?        -在视图函数中重定向的地址原来是写死的,如果url地址变更,我需要所有的url都修改,很麻烦,所以通过反向解析,获得url的地址

?    如何使用:

?        -路由层(项目自己的):

?            url(r"^test_2/", views.test_2,name="test") test为test_2的别名

?        -视图层:(用的比较多)

?            from  django.shortcuts import reverse

?            url = reverse( test )     #上面路由的别名

?            如果做了分组

?                url = reverse(”url地址的别名“,args=[] , kwargs={})

?        -模板层(也就是前端):(用的比较多)

?            {% url  "url地址的别名"%}

?            href= “ {% url  ”url地址的别名“ 参数1  参数2%} ”

**8、名称空间**

?    -路由分发是,可以指定名称空间:

?        -url(r^app02/,include(app02.urls,namespce=app02)),

?        -url(r^app03/,include("app03.urls",namespace="app03")),

?    -在视图中反向解析:

?        url=reverse(”app02:test“)

?    -在模板中反向解析:

?        {%url  ”app02:url 地址的别名“%}

?    -个人不建议这么使用:

?        在不同app的url中起别名的时候,添加app名_别名

**9、 django 2.0的path,re_path(了解)**
   -1.几的url就是2.几的re_path
   -2.0的path 第一个参数不再是正则表达式
   -5个转换器:int,str,slug,path,uuid
**10、 自定义转换器(了解):**
       -1 写一个类:
?              class MyCon:
?             regex = [0-9]{4}
?             def to_python(self, value):
?                    return int(value)
?             def to_url(self, value):
?                    return %04d % value
       -2 在urls中:
?              -from django.urls import register_converter
?              -register_converter(类名,别名)
?          
?              -path(test/<别名:year>, views.test,name=year),



```
作业:  day78
  ```

 

以上是关于Django url (路由)的主要内容,如果未能解决你的问题,请参考以下文章

Django之URL路由系统

django之路由系统

django之路由系统

Django之路由系统

Django之路由系统

Django之路由系统