zoukankan      html  css  js  c++  java
  • doraemon的python django框架的路由详解(国庆大更新)

    ### 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'   按照位置传参
      - {% url'blogs 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
    ```
  • 相关阅读:
    学点 C 语言(39): 函数 使用函数的代价与内联函数(inline)
    学点 C 语言(35): 函数 递归
    学点 C 语言(34): 函数 关于变量(auto、static、register、extern、volatile、restrict)
    学点 C 语言(37): 函数 常量(const)参数
    带进度的文件复制 回复 "冷风无泪" 的问题
    如何把一个程序中 Edit 中的文本赋给另一个程序的 Edit ? 回复 "Disk_" 的问题
    学点 C 语言(32): 函数 返回值
    博客园电子期刊2011年12月刊发布啦
    上周热点回顾(12.261.1)
    上周热点回顾(1.21.8)
  • 原文地址:https://www.cnblogs.com/doraemon548542/p/11638544.html
Copyright © 2011-2022 走看看