zoukankan      html  css  js  c++  java
  • 路由的基本使用

      一.路由的基本使用:  

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

        url(r'^liuqingzheng/article/aa.html$',views.test,

      二.路由的无名分组

        url(r'^test2/(d+)/(w+)$',views.test2),

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

      三.路由的有名分组

        url(r'^test3/(?P<id>d+)/(?P<name>w+)$',views.test3),

        有名分组分出几个值,视图函数就要接收几个值(按关键字传入,位置可以打乱)

      四.有名和无名不能混着用

      五.在settings中配置(以后项目,一般不用动)

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

        # 如果是False,浏览器默认不会加/

        # APPEND_SLASH = False

      六.路由分发

        1.导入include

            from django.conf.urls import include

        2.在主路由中:

            url(r'^app01/',include('app01.urls')),

            url(r'^app02/',include('app02.urls')),

        3.在不同app中新建一个urls

            from app01 import views

            urlpatterns = [

              url(r'^test/',views.test),

            ]

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

      七. 反向解析

          干什么用?

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

          如何使用:

            路由层:

              url(r'^test_2/$',views.test2,name='test2'),

            视图层:

              from django.shortcuts.import reverse

              url = reverse('url地址的别名')

              # 如果做了分组

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

            模板层:

              {% url 'url地址的别名' %}

              # 如果做了分组

              {% url 'url地址的别名' 参数1 参数2 %}

      八. 名称空间

        路由分发时,可以指定名称空间:

          url(r'^app01/',include('app01.urls',namespace='app01')),

          url(r'^app02/',include('app02.urls',namespace='app02')),

        在视图中反向解析:

          url=reverse('app01:test')

        在模板中反向解析:

          {% url 'app01:url地址的别名' %}

        个人不建议这么使用:

          在不同app的urls中起别名的时候,添加:app名_别名

      九. django 2.0的path, re_path

        1.几的url就是2.几的re_path

        2.0的path  第一个参数不再是正则表达式

        5个转换器: int,str,slug,path,uuid

      十. 自定义转换器:

        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')

  • 相关阅读:
    docker命令
    IntelliJ IDEA设置JVM运行参数
    SpringResourceBundleMessageSource示例(转)
    通过ApplicationContextAware加载Spring上下文环境(转)
    @ControllerAdvice + @ExceptionHandler 全局处理 Controller 层异常(转)
    SpringBoot学习(十一)创建自己的自动配置和Kotlin支持
    SpringBoot学习(十)Spring集成、会话、(监视和管理JMX)、WebSockets和web服务
    BindingResult不能获取错误对象
    SpringBoot学习(九)使用JTA的分布式事务、Hazelcast、Quartz调度器和任务执行和调度
    Maven项目中pom文件分析
  • 原文地址:https://www.cnblogs.com/xiaocaiyang/p/10241146.html
Copyright © 2011-2022 走看看