Django 路由定义

Django的路由定义

  1. 什么是路由?
    指url与后端Django视图之间的一一映射关系
  2. 添加和匹配规则
    1)urlpatterns列表从上到下进行匹配(路由寻址)
    2)urlpatterns列表中条目一旦匹配成功,就会终止往下匹配
    3)urlpatterns列表中条目匹配不成功,就会一直往下匹配
    4)urlpatterns列表中如果包含了子路由会在找到子路由进行匹配,子路由找不到则会在主路由继续匹配
    4)如果全部条目都匹配不成功,那么会抛出404异常(404页面)
  3. path函数
    1)用于定义路由条目
    2)第一个参数为url路径参数(字符串),路径最前面不添加/,路径最后面需要添加/
    3)第二个参数为视图函数或者类视图,如果添加的视图函数,一定不要使用()
    4)第三个参数: kwargs任意个关键字参数可以作为一个字典传递给目标视图函数
    5)第四个参数:name 你的 URL 取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。这个有用的特性允许你只改一个文件就能全局地修改某个 URL 模式。
    6)如果第二个参数为include,那么会继续进入到子路由中匹配,子路由的匹配规则与全局路由匹配规则一致
    7)第一个参数可以使用类型转化器
    - <类型转化器:参数名称>
    - 默认的类型转化器:int、str、slug、uuid
    - 参数名称,在调用视图时,会自动传递给视图函数,需要使用同名的参数接收
  • 主路由定义如下:
    # 主路由定义
    # from django.contrib import admin
    from django.urls import path, include, re_path
    
    # from projects.views import index, get_project
    from projects import views
    
    urlpatterns = [
        # 使用类型装换器<类型转化器:参数名称> 会匹配int类型数据作为pk参数
        path('projects/<int:pk>/', views.get_projects),
        # 使用re_path 可进行正则匹配 
        # as_view() 可以将类视图当做当前路由的对应的视图
        re_path(r'(?P<username>\w{6,20})/count/$', ListUserCountView.as_view()),
        # include(子路由) 会到projects下的urls进行查找
        path('', include('projects.urls')), # 回去找projects项目下的urls
    ]
    
    
  • 子路由定义
    
    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('projects/<int:pk>/', views.ProjectsView.as_view()),
    ]
    
  1. re_path的用法
    re_path其实作用和path相似,都是匹配url路径后找到对应的视图进行处理,但是re_path使用正则进行匹配,可以理解成path的增强版 ;
    具体使用如:
    # 这里是匹配邮箱格式,匹配到则存成变量,变量名称为email(后面会在视图函数中作为入参进行获取),并调用is_email_exist视图方法
    re_path(r'(?P<email>^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$)/count/$', views.is_email_exist)
    
    # 视图中入参获取email
    def is_email_exist(self, request, email):
        print(email)
        pass
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值