当前位置 : 主页 > 编程语言 > python >

doraemon的python django框架的路由详解(国庆大更新)

来源:互联网 收集:自由互联 发布时间:2021-06-25
# ## 11.8 路由 # ### 11.8.1 urlconf ```python from django.conf.urls import url from app01 import viewsurlpatterns = [ url(r ‘ ^admin/ ‘ ,admin.site.urls), # 这里用到了正则 url(r ‘ ^home ‘ ,views.home,{},name= ‘ home ‘ )
### 11.8 路由

#### 11.8.1 urlconf

```python
from django.conf.urls import url
from app01 import views
urlpatterns = [
    url(r^admin/,admin.site.urls),   #这里用到了正则
    url(r^home,views.home,{},name=home), 
]
```

#### 11.8.2 分组和命名分组

url上捕获的都是字符串

分组

```python
url(r^blog/([0-9]{4})/(\d{2})),views.blogs,name=blogs)
    
#以括号为单位,捕获到的参数会按照位置传参传递给视图函数
```

命名分组

```python
url(r^blog/(?P<year>[0-9]{4})/(?P<month>\d{2})),views.blogs,name=blogs)
    
#捕获的参数会按照关键字传参传递给视图函数
```

传递参数

```python
url(r^home/(?P<year>\d{4})$),views.home,{year:2019,name=home})
```



#### 11.8.3 路由分发

```python
from django.conf.urls import url,include
from django.contrib import admin
from app01 import views
urlpatterns = [
    url(r^admin/,admin.site.urls),   #这里用到了正则
    url(r^app01,include(app01.urls,namespace=app01)), 
    url(r^app02,include(app02.urls,namespace=app02)), 
]
```

#### 11.8.4 url的命名和反向解析

静态路由

```python
url(r^home/$,views.home,name=home)
```

反向解析:

- 模板   {% url blog %}   ------>app01/home/
- py文件 

```python
from django.urls import reverse
reverse(home)  ---->app01/home/
```

分组:

```python
url(r^blog/([0-9]{4})/(\d{2})),views.blogs,name=blogs)
```

反向解析:

- 模板  {% url blog 2019 06%}   ------>app01/blog/2019/06
- py文件

```python
from django.urls import reverse
reverse(blogs,args=(2019,06))  ---->app01/blog/2019/06
```

命名分组:

```python
url(r^blog/(?P<year>[0-9]{4})/(?P<month>\d{2})),views.blogs,name=blogs)
```

反向解析:

- 模板
  - {% url blog 2019 06%}   ------>app01/blog/2019/06   按照位置传参
  - {% urlblogs year=2019 month=06 %}-----> app01/blog/2019/06   按照关键字传参
- py文件

```python
from django.urls import reverse
reverse(blogs,args=(2019,06))  ---->app01/blog/2019/06
from django.urls import reverse
reverse(blogs,kwargs=(year=2019,month=06))  ---->app01/blog/2019/06
```



#### 11.8.5 namespace

```python
 url(r^app01,include(app01.urls,namespace=app01)),
```

应用

```python
{% url app01:home %}   #在模板中应用,一定要加上namespace
reverse(app01:home)    #在py文件中应用,一定要加上namespace
```
网友评论