【Django学习笔记 - 4】:路由2

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 【Django学习笔记 - 4】:路由

3、re_path的使用


使用re_path的情况:


请求路径是一个动态变化但有一定规律的时候

导入的模块:from django.urls import re_path


在根路由的路由列表中设置一个动态的访问路径:以a开头,接着两个任意数字,再接着是两个任意单词字符,最后为一个反斜杠 /


289284de054e4435b7de8704edcacd87.png


当我们以c开头的请求路径进行访问时,会发现”出现找不到此路径“的提示,以a开头访问后才可访问到请求路径

e7eca65881ca4db3979705afc58433c4.png


ade1d46293d34695b52bcc8b72cc5f70.png

然后添加two,回车,即可出现一个响应内容

122f4f5897694467b472837fe44e4783.png





三、路由命名与逆向解析重定向


1、路由命名与逆向解析



路由命名的作用:


   可以根据命名来知道这个路由它的一个请求路径。


逆向解析:


需要用到reverse方法


       from django.urls import reverse

根据路由命名来逆向出路由的请求路径


   如果是访问的时候是根据路径来访问

   如果是逆向解析的时候是根据名字来访问



子路由的路由列表中,给一个路由命名,然后在路由列表中添加一个reverse的路由

962082246d9a402f8dc8426a1a4c4297.png



  • 接着在子应用中的view.py中,设置reverse方法,逆向到路由的路径


303d28fa85454d3cab4ba50a23e0d162.png


当我们访问根路由,通过路由转发,然后再访问子路由reverse,会返回一个名为“People”的路由的路径


2f755650bebf476689bd99c936dc5420.png



398a220587ab43c6813455e9eabaa601.png



2、命名空间和重定向




命名空间:      

作用:为了避免不同的子应用中存在相同名字的路由的情况,导致进行逆向解析的时候发生冲突。


 

path('first/', include(('app_1.urls', 'app_1'), namespace='People')),
        include(('子路由分发路径', '子应用'), namespace='People')


重定向:


从一个页面到另一个页面


django中也是将重定向的方法封装好了的,直接导包使用即可



   

from django.shortcuts import redirect


1.重定向网址:return  redirect("网址")


2.重定向路由:return  redirect("/路由名/")


3.重定向路由反解析:


path = reverse(“命名空间namespace:路由name”)    

       return redirect(path)


根路由的路由列表中,给一个路由设置命名空间


5f6baeec04524555b6872c45736b1d33.png

接着在子路由中给几个路由进行命名

f83264d73eb849db858fa21220efec0d.png



  • 然后在子应用views.py的reverse_view函数中进行重定向

453ef1c580524f5f9d992fe596aea049.png

启动Django项目,在浏览器url中输入 user/reverse 后回车,回车后即可看见页面跳转

b2e00f144f574c13a01a475b4972bfae.png

bb7629b0676c462ba7f6977dcd6d1be2.png

相关文章
|
2月前
|
Python SEO
Django入门到放弃之路由
Django入门到放弃之路由
|
2月前
|
Python
[django]路由变量与正则表达式
[django]路由变量与正则表达式
|
4月前
|
JSON API 网络架构
Django REST framework视图集与路由详解:深入理解ViewSet、ModelViewSet与路由映射器
Django REST framework视图集与路由详解:深入理解ViewSet、ModelViewSet与路由映射器
|
4月前
|
存储 安全 网络协议
Django路由与会话深度探索:静态、动态路由分发,以及Cookie与Session的奥秘
Django路由与会话深度探索:静态、动态路由分发,以及Cookie与Session的奥秘
|
4月前
|
API 网络架构 Python
在django使用视图集和路由集
【6月更文挑战第11天】本文介绍Viewsets是Django REST框架中将多个视图逻辑整合到单个类的工具,减少了重复代码。当项目API变得复杂且有重复模式时,考虑使用它们;否则,保持视图和URL模式的简洁性。
35 3
|
4月前
|
API 数据库 网络架构
在django中应用视图和路由集
【6月更文挑战第10天】 本文介绍viewsets`和`Routers`是Django REST framework中用于简化API视图和路由的工具。它们提供了一个抽象层,允许用更少的代码替代多个相关视图,并能自动生成URL。定义`UserList`和`UserDetail`视图集,分别用于列表和详情展示。
24 3
|
4月前
|
缓存 JSON API
在django项目中使用装饰器管理路由
【6月更文挑战第12天】本文介绍了Python装饰器在API管理中的应用,包括用于延迟计算、缓存和转换函数的装饰器。实践中,以Django Rest Framework为例,演示了如何使用装饰器定义GET、POST、PUT和DELETE请求的视
45 1
|
4月前
|
Python
Django——路由
Django——路由
|
4月前
|
Python
创建Django项目,实现视图,路由
创建Django项目,实现视图,路由
|
4月前
|
Python
初识Django,以及路由设置
初识Django,以及路由设置