zoukankan      html  css  js  c++  java
  • 路由控制

    路由层:

    1简单匹配

      

      1、第一个参数是正则表达式(如果要精准匹配:‘^publish/$’)
    
      2、第二个参数是试图(不要加括号)
    
      3、Url(r’^admin/’,admin.site.urls),

    2无名分组

    按位置参数分组后,会把分组出来的数据,当位置参数,传到视图函数,所以视图函数需要定义形参。
    
    -url(r'^publish/([0-9]{4})/([0-9]{2})$', views.publish),
    
    -def publish(request,*args):   视图函数可以这样接收

    3 有名分组

    按关键字参数,有名分组之后,会吧分组出来的数据,当关键字参数,传到视图函数,所以视图函数需要定义形参,形参 名字要跟分组名字对应,与顺序无关
    
    -url(r'^publish/(?P<year>[0-9]{4})/(?P<mounth>[0-9]{2})/$', views.publish),
    
    -def publish(request, mounth,year):

    ******有名分组和无名分组不要混用

    4 反向解析

    先命一个名:
    
      1、 无参数:url(r'^publishadd133/$', views.publishadd,name='ddd'),
    
      2、 无名分组:url(r'^publishadd/([0-9]{4})/([0-9]{2})/$', views.publishadd,name='ddd'),
      
      3、有名分组:url(r'^publishadd/(?P<year>[0-9]{4})/(?P<mounth>[0-9]{2})/$', views.publishadd,name='ddd'),
    
    在模板层:
    
      1、 无参数:{% url 'ddd' %}
    
      2 、无名分组的:{% url 'ddd' 2018 12 %}
    
      3、 有名分组:{% url 'ddd' 2018 12 %}  还可以 {% url 'ddd' year=2018 mounth=12 %}
    
    在视图层:
    
      from django.shortcuts import reverse
    
    在视图函数里:
    
      无参数:url=reverse('ddd')
    
      无名分组:url=reverse('ddd',args=(2018,12,))
    
      有名分组:url=reverse('ddd',args=(2018,12,)) 还可以 url=reverse('ddd',kwargs={'year':2018,'mounth':12})
    
    路由分发:
    
      1、在不同的app里创建urls.py
    
      2、在总路由
    
      From django.conf.urls import include
    
      Url(‘^blog/’,include(‘blog.urls’)),
    
      url(r'^app01/',include('app01.urls')),
    
    ******重点:总路由,不能加结束符$

    名称空间:

    -url(r'^blog/',include('blog.urls',namespace='blog')),
    
    子路由:url(r'^publish/$', views.publish,name='test'),
    
    反向解析:
    
    -视图层:url = reverse('blog:test')
    
    -模板层:{% url 'app01:test'%}
    
    ***一般不要用***
    
    子路由:url(r'^publish/$', views.publish,name='app01_test'),

    伪静态:

    路由:url(r'^book/(?P<id>d+.html)',views.book),
    
    访问:http://127.0.0.1:8000/book/4.html

     django 2.0与django 1.0的区别

    django 2.0和django 1.0 路由层区别(*****url,re_path分组分出来的数据,是字符串)
            -re_path:跟1.0的url用法相同
            -path:传的路径,是准确路径
                5个转换器-->path('test/<path:year>', views.re_test),
                str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
                int,匹配正整数,包含0。
                slug,匹配字母、数字以及横杠、下划线组成的字符串。
                uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
                path,匹配任何非空字符串,包含了路径分隔符(/)(不能用?)
            -自定义转换器
                1 定义一个类:
                    class MyCon:
                        # 写一个正则表达式
                        regex = '[0-9]{4}'
                        # 匹配出來的数据,会传到这里,retrun回去的,会被视图函数接收
                        def to_python(self, value):
                            return int(value)
                        # 反向解析用的
                        def to_url(self, value):
                            return '%04d' % value
                2 from django.urls import register_converter
                  register_converter(MyCon,'yyy')
                3 path('test/<yyy:year>', views.re_test,name='test'),
        

    补充: # 为假,不会加反斜杠
    seting中配置环境
    # APPEND_SLASH=False

     

  • 相关阅读:
    centos7环境下使用xtrabackup备份mysql8.0自动化脚本
    ECharts series data 数组里面的元素,可以是对象
    Docker for Mac 配置镜像加速器,加快镜像下载速度
    sql函数split在presto、spark、hive中的不同
    字段类型为:map<string,string> 时,查询取值(必须使用单引号)
    vendor模式下get报错:go get: disabled by -mod=vendor,此时go env里 GOFLAGS=" -mod=vendor"
    Etcd使用go module的灾难(包依赖问题)
    Go time.Parse转时间戳为啥会自动加8小时?
    scala 下划线使用指南
    【Spark】遍历DataFrame中的每一行数据
  • 原文地址:https://www.cnblogs.com/xuecaichang/p/9931667.html
Copyright © 2011-2022 走看看