在 Django 项⽬中,⼀个常⻅需求是获取最终形式的 URL,⽐如⽤于嵌⼊⽣成的内容中(视图和资源⽹址,给⽤户展示⽹址等)或⽤户服务器端的导航处理(重定向等)。

强烈建议不要硬编码 URL(这是⼀个费⼒、不能扩展、容易出错的主意)。同样危险的是设计临时机制来⽣成的 URL 与URLconf描述的设计的URL⼀样,这会导致URL 随着时间的推移变得过时。

换句话说,需要的是 DRY 机制。除其他优势外,它还允许 URL 设计⾃动更新,⽽不必遍历所有项⽬代码来搜索和替换过时的 URL 。

Django 提供执⾏反转 URL 的⼯具,这些⼯具与需要 URL 的不同层匹配:

在模板⾥:使⽤ url 模板标签。
在 Python 编码:使⽤ reverse() 函数。

一、路由命名

在定义路由的时候,可以为路由命名,⽅便查找特定视图的具体路径信息。
1、 在定义普通路由时,可以使⽤name参数指明路由的名字,如

根路由:

urlpatterns = [path('admin/', admin.site.urls),path('film/',include('film.urls')),
]

子路由

# 查询所有影⽚信息
urlpatterns = [ path('filmlist/',views.filmList,name='film-list')
]

视图:

def loginview(request):url=reverse('film-list')print(url)return HttpResponseRedirect(url)def otherview(request):return HttpResponse('vip——film')

访问url:
http://127.0.0.1:8000/film/login/
重定向后的url:
http://127.0.0.1:8000/film/filmlist/

执行过程:
a、输入url(http://127.0.0.1:8000/film/login/),进行主路由、子路由寻址,
b、寻址成功调用loginview视图函数
c、执行url=reverse(‘film-list’),找到路由中的’film-list’,根据film-list,返回url(url:/film/filmlist/)
注意:函数中的参数:film-list,和路由中的参数保持一致
d、重定向HttpResponseRedirect(url),调用视图函数otherview,返回响应结果

2、传递参数的情况(uname)
需要在reverse函数中传递args=['参数']
子路由:

urlpatterns = [path('login/',views.loginview),path('filmlist/<uname>',views.otherview,name='film-list')
]

视图:

def loginview(request):url=reverse('film-list',args=['kb'])print(url)return HttpResponseRedirect(url)def otherview(request,uname):return HttpResponse('vip——film--%s'%uname)

【django】路由命名和路由反向解析相关推荐

  1. Django视图之介绍、项目准备、URL、路由命名、reverse反解析和Postman测试

    知识点: HttpRequest 位置参数和关键字参数 查询字符串 请求体:表单数据,JSON数据 请求头 HttpResponse HttpResponse JsonResponse redirec ...

  2. 11.14 尚品汇 day01 脚手架,路由命名,路由跳转,传参,props传参,重写push,replace

    less使用 npm i less npm i less-loader 安装easy less 1)要求 1.1:每一天老师书写代码务必三遍 1.2:node + webpack + VScode + ...

  3. Django视图层:URL的反向解析(主路由include之namespace,子路由之name,模板标签{%url%},视图reverse()函数,反向解析示例,URL命名空间

    一.视图层The view layer Django 具有 "视图" 的概念,负责处理用户的请求并返回响应. 二.URL反向解析Reverse resolution of URLs ...

  4. Django(5)-路由配置实例

    Django(1)-简介 Django(2)-创建项目及默认项目目录结构介绍 Django(3)-配置文件详解 Django(4)-URL和视图 Django(5)-路由配置实例 Django(6)- ...

  5. python动态映射_Python Django框架url反向解析实现动态生成对应的url链接示例

    本文实例讲述了Python Django框架url反向解析实现动态生成对应的url链接.分享给大家供大家参考,具体如下: url反向解析:根据url路由规则,动态生成对应的url链接 (防止硬编码). ...

  6. django ajax 更新表格_Django(反向解析,路由分发、名称空间、视图层、虚拟环境、Django版本、json,CBV)...

    https://www.zhihu.com/video/1249117508688711680 每日测验 """ 今日考题 1.列举你知道的orm数据的增删改查方法 2. ...

  7. djang urls.py 无名有名分组,反向解析,路由分发,名称空间,伪静态,虚拟环境,django版本...

    路由层 路由匹配:APPEND_SLASH = False , 取消自动补全 , settings.py 中添加字段即可 若url尾部为书写/ , django内部会自动补全 urls.py 中 对应 ...

  8. Django学习之路由分发和反向解析

    原 Django学习之路由分发和反向解析 2018年07月12日 14:04:55 huangql517 阅读数 519 1>路由分发 我们之前学习的路由配置都是在项目的全局控制文件(项目名称目 ...

  9. Web框架之Django_03 路由层了解(路有层 无名分组、有名分组、反向解析、路由分发 视图层 JsonResponse,FBV、CBV、文件上传)

    阅读目录 一.路由层:(Django的路由系统) 二.伪静态网页和虚拟环境: 三.FBV与CBV.JsonResponse.文件上传 一.路由层:(Django的路由系统) URL配置(Django项 ...

最新文章

  1. jdk8新特性 lambda表达式详解
  2. EOJ Monthly 2018.1
  3. 《1---关于解决MySQL在控制台插入中文乱码问题》
  4. 马斯克的火箭,这次没!爆!炸!
  5. antd option宽度自适应_Web移动端实现自适应缩放界面的方法汇总
  6. RSA的密钥把JAVA格式转换成C#的格式
  7. 数据结构题:根据所给权值设计相应的哈夫曼树,并设计哈夫曼编码
  8. so库文件控制导出符号
  9. C# PPT转图片的解决方案
  10. 苹果背后的拼多多双11“农产品狂想曲”
  11. word 2016 无法输入中文 输入法失效 只能输入英文
  12. 华为路由器接口如何区分_华为路由器接口管理命令有哪些
  13. 在移动硬盘里移动视频文件到移动硬盘 另外一个文件夹 显示正在计算_移动硬盘也支持AES-256位硬件加密,希捷锦系列入手体验...
  14. RedisCluster如何高效率地批量插入数据
  15. CIKM 2021 | 淘宝多场景推荐排序模型ZEUS
  16. H.264编解码浅析
  17. POV-RAY基础教程 - POV-Ray坐标系(7)
  18. Objective-C Memory Management For Lazy People
  19. 3060笔记本推荐产品,游匣G15首当其冲
  20. 王咏刚《AI的产品化和工程化挑战》

热门文章

  1. oracle standby同步,ORACLE 利用rman增量备份同步standby库
  2. linux cisco路由器,怎样让linux做cisco路由器的专用日志服务器
  3. 城市需要建什么样的能源数据中心?
  4. 读懂 | 路由器简史
  5. 2017 全球超大规模数据中心已超过 390 个,中国仅占 8%
  6. 成功解决matplotlib绘图的时候,自定义横坐标和纵坐标刻度数值(调整坐标轴刻度间隔)
  7. Dataset:机器学习和深度学习中对数据集进行高级绘图(数据集可视化,箱线图等)的简介、应用之详细攻略——daidingdaiding
  8. 成功解决ValueError: too many values to unpack (expected 2)
  9. BigData:根据最新2018人工智能行业创新企业Top100名单,绘制AI地区热点图,一目了然,看清哪个是AI最热门城市,以及VC最AI的热门领域
  10. DL之DNN优化技术:利用Batch Normalization(简介、入门、使用)优化方法提高DNN模型的性能