Django的静态路由和动态路由

1静态路由匹配方式

urlpatterns属性:
  1. 首先找到urls.py下的urlpatterns全局变量,这是一个路由规则实例的列表数据。
  2. 按照先后定义顺序,进行路由匹配。
  3. 找到第一个匹配项时停止匹配,执行匹配到的视图函数。
  4. 遍历完全,未发现匹配,django进行异常处理

注意(静态路由不考虑http请求方式)

1.path静态路由方法:
from django.urls import path(导包)
urlpatterns = [
    path('admin/', admin.site.urls),
]
2.re_path方法:
from django.urls import re_path(导包)
urlpatterns = [
	re_path(r'^[a-z]{3}$', views.ReView.as_view())
]

2.动态路由(重点)

1.动态路由传参与GET传参的异同:
  • 动态路由传参,参数需要参与路由匹配,在路由匹配中获取参数(参与路由匹配)
  • GET参数,参数部分不需要参与路由匹配,在视图中获取参数(不参与路由匹配)
2.动态路由转换器:
class Index(View):
    def get(self,request,page,y):
        return HttpResponse(f'当前为第{page}{y}行')
urlpatterns = [
    #     动态路由:
    page和y与类视图要对应
    path('index/<int:page>/<int:y>/', views.Index.as_view()),(常用)
    path("<x>/<y>/",views.index), # 不指明类型(默认x,y是字符类型)
    re_path(r"^(?P<x>\d+)/(?P<y>[a-zA-Z]+)/$"), # (?P<name>pattern) 正则分组
    re_path(r"^(\d+)/([a-zA-Z]+)/$"),
]

3路由分发(重点)

1.意思就是在子应用下创建urls路由,然后主路由使用include实现分发效果:

子应用里的路由:
from django.urls import path,re_path
from myapp import views
urlpatterns = [
    re_path(r'^[a-z]{3}/$', views.ReView.as_view()),
    #     动态路由:
    path('index/<int:page>/<int:y>/', views.Index.as_view()),
]

在主路由里面进行分发:
from django.urls import path,include(导入)
# 将子路由传递过来
from myapp import urls
urlpatterns = [
    path('admin/', admin.site.urls),
    # 路由分发:
    引号里可以写,可以写
    path('',include(urls))
]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值