第四单元 路由层

路由层

1.静态路由

Django的路由不考虑HTTP请求方式,仅根据URL进行路由;即,只要URL相同,无论POSTGET等哪种请求方式都指向同一个操作函数

path方法

#    	路由           路由对应的类视图
path('register/', views.RegisterView.as_view()),

re_path方法

# 使用正则表达式匹配路由的地址,与路由对应的视图函数
re_path(r"^",views.index),

2.动态路由

1.动态路由转换器

	path('<int:x>/<str:y>/',views.index), # 指明类型
    path("<x>/<y>/",views.index), # 不指明类型
    re_path(r"^(?P<x>\d+)/(?P<y>[a-zA-Z]+)/$"), 
    # (?P<name>pattern) 正则分组
    re_path(r"^(\d+)/([a-zA-Z]+)/$"),
路由通过尖括号进行分组匹配,使用**int**以及**str**内置转换器将连接对应部分的值进行转换;并将匹配到的结果传递到视图函数对应的参数位置上;

2.动态路由参数传递

def index(request,x,y):
    content = "x:%s\ny:%s" % (x,y)  
    return HttpResponse(content)
# 定义如上函数,将会接收连接中的后两部份`path`值作为参数,分别依次给到`x`和`y`
str:匹配除了路径分隔符(`/`)之外的非空字符串,这是默认的形式
int:匹配正整数,包含0

-   动态路由传参,参数需要参与路由匹配,在路由匹配中获取参数
-   GET参数,参数部分不需要参与路由匹配,在视图中获取参数

3.路由分发

在子应用内新建urls文件用于存放自己的路由

from django.urls import path,re_path
from myapp import views

# 子路由
urlpatterns = [
    path('register/', views.RegisterView.as_view()),
    path('login/', views.LoginView.as_view()),
    path('index/', views.IndexView.as_view()),

#动态路由
path('index2/<int:id>',views.IndexView2.as_view())
]

需要在主页面实现分发

from django.contrib import admin
from django.urls import path,include
# 需导入子应用的urls
from myapp import urls


# 主路由
urlpatterns = [
    path('admin/', admin.site.urls),
    # 使用include 实现路由分发,找到子app下的路由文件
    path("",include(urls))
]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值