zoukankan      html  css  js  c++  java
  • Django url (路由)

    1、路由的基本使用

    #url 是个函数,有四个参数,第一个参数要传正则表达式,第二个参数传函数内存地址,第三个传默认参数,第四个传路由别名
    
    ​    url(r'^yaopipqideneirong/article/aa.html$',views.test),
    
    ​    -路由从上往下匹配,一旦匹配成功,后面就不继续匹配了

    2、路由的无名分组

    url(r'test2/(d+)/(w+)$',views.test2),
    
    ​    无名分组分出几个值,试图函数就要接受几个值(位置参数形式传过来的)

    3、路由的有名分组

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

    注意: 有名和无名不能混着用

    APPEND_SLASH=False:

    在settings中配置(以后项目,一般不用动)**
    
    ​        默认是true,浏览器浏览的时候,默认加上斜杠
    
    ​        如果是false,浏览器默认不会加 /

    6、路由分发

    1、在 主 路由中导入 include
    ​        -from django.conf.url import include
    2、在主路由中: 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'),
  • 相关阅读:
    java.lang.NoSuchMethodError
    asm相关内容想下载(包括 jar 包)
    Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/objectweb/asm/Type
    用Navicat连接mysql报错:2003-Can't connect to MySql server on '10.100.0.109'(10039)
    The type java.lang.reflect.AnnotatedElement cannot be resolved. It is indirectly referenced from required .class files
    The type java.lang.CharSequence cannot be resolved. It is indirectly referenced from required .class files
    交通测速方式
    卡口和电子警察的区别
    Myeclipse连接Mysql数据库时报错:Error while performing database login with the pro driver:unable
    在window上安装mysql
  • 原文地址:https://www.cnblogs.com/TF511/p/10242384.html
Copyright © 2011-2022 走看看