• 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'),
  • 相关阅读:
    APP端上传文件至服务器后台,WEB端上传文件存储到服务器
    freemarker模板引擎
    JEECG开发总结
    spring的基本配置
    jeecg解析xml文件
    jeecg查询备份
    jeecg 页面标签规则
    jeecg查询分页
    算法实践——改良的求解数独的暴力搜索法
    算法实践——舞蹈链(Dancing Links)算法求解数独
  • 原文地址:https://www.cnblogs.com/TF511/p/10242384.html
Copyright © 2020-2023  润新知