学习笔记,仅供参考

参考自:Django打造大型企业官网;

本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽量详细的写一下。


URL中添加参数

利用关键字传参

有时候,url中包含了一些参数需要动态调整。比如,我们设置书籍《数学分析》详情页面的url为http://127.0.0.1:8000/book/shuxuefenxi/,URL中的shuxuefenxi就是这本书详情页面的id,我们同样可以设置书籍《机器学习》详情页面的url为http://127.0.0.1:8000/book/jiqixuexi/,那么jiqixuexi就是该书详情页面的id。

如何在django中实现这种需求呢,我们可以在urls.py模块的path函数中,使用尖括号的形式(<参数名>)来定义一个参数,并将该参数传递给视图函数。

book应用下的urls.py模块:

from django.contrib import admin
from django.urls import path
from . import viewsurlpatterns = [path('show_book/', views.show_book),path('<book_id>/', views.book_detail),
]

book应用下的views.py模块:

def book_detail(request, book_id):html = "<h2>{}的详情页面</h2>".format(book_id)return HttpResponse(html)

需要注意的是,我们使用尖括号传递参数,是一种关键字传参方式,所以在视图函数book_detail中,形式参数名必须和尖括号里的参数名一致。

现在,我们向http://127.0.0.1:8000/book/shuxuefenxi/发起请求:

利用查询参数传参

我们还存在一种利用查询参数的方式,向视图函数中传递参数。

我们在浏览器中打开百度贴吧,进入安徽财经大学吧,翻至第二页,可以看到此时的URL为:

https://tieba.baidu.com/f?kw=%E5%AE%89%E5%BE%BD%E8%B4%A2%E7%BB%8F%E5%A4%A7%E5%AD%A6&ie=utf-8&pn=50

kw查询参数后是吧名的ASCII编码值,我们在DevTools的Console中将其转换为中文字符,方便查看:

#输入
decodeURI("https://tieba.baidu.com/f?kw=%E5%AE%89%E5%BE%BD%E8%B4%A2%E7%BB%8F%E5%A4%A7%E5%AD%A6&ie=utf-8&pn=50")
#输出
"https://tieba.baidu.com/f?kw=安徽财经大学&ie=utf-8&pn=50"

可以看到,查询参数以?问号开头,以&分隔。我们写URL时,也应该遵从这种形式,进而将URL中的查询参数传递到视图函数中去。

首先,我们在book应用的urls.py中定义路由:

from django.contrib import admin
from django.urls import path
from django.urls import re_path
from . import viewsurlpatterns = [path('show_book/', views.show_book),re_path('<book_id>/$', views.book_detail),path('show_author/', views.author),
]

再定义views.py:

def author(request):name = request.GET.get('name', '')age = request.GET.get('age', '')html = "{}作家今年{}岁".format(name, age)return HttpResponse(html)

我们需要用request.GET来获取查询参数值,而使用request.GET.get方法,是为了当请求的url中没有定义该查询参数时,给局部变量定义一个空字符串"",防止出现异常。

向http://127.0.0.1:8000/book/show_author/?name=Ada&age=23发起请求:

向http://127.0.0.1:8000/book/show_author/?age=23发起请求:

Django从理论到实战(part8)--URL中添加参数相关推荐

  1. Django从理论到实战(part14)--url反转

    学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽 ...

  2. Django从理论到实战(part10)--URL命名与反转

    学习笔记,仅供参考 参考自:Django打造大型企业官网: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽量详细的写 ...

  3. Django从理论到实战(part16)--指定默认的参数

    学习笔记,仅供参考 参考自:Django打造大型企业官网: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽量详细的写 ...

  4. Django从理论到实战(part29)--Field的常用参数

    学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: Field的常用参数 null 如果设置为True,Django将会在映射表的时候指定是否为空.默认是为False.在使用字 ...

  5. url get参数 php,怎么取得Url中Get参数

    这次给大家带来怎么取得Url中Get参数,取得Url中Get参数的注意事项有哪些,下面就是实战案例,一起来看一下. 此时可以使用js的方式得到当前页面的url中的get参数. 核心语句是:window ...

  6. 如何获取URL中的参数

    获取URL中的参数 1. 使用JS函数获取URL参数 使用示例 2. Angular应用中,从URL中获取参数信息的方法 使用示例 ActivatedRoute属性 1. 使用JS函数获取URL参数 ...

  7. 删除url中某个参数

    这里的url 是指一个网站链接 例如: https://baidu.com?a=1&b=2 下面看一下封装的代码 <!DOCTYPE html> <html><h ...

  8. 解决JS在url中传递参数时参数包含中文乱码的问题

    解决JS在url中传递参数时参数包含中文乱码的问题 参考文章: (1)解决JS在url中传递参数时参数包含中文乱码的问题 (2)https://www.cnblogs.com/xushengguan/ ...

  9. php获取url传递的参数,php解析url并得到url中的参数及获取url参数的四种方式

    下面一段代码是php解析url并得到url中的参数,代码如下所示:<?php $url = "http://www.baidu.com/index.php?m=content& ...

最新文章

  1. ROS Melodic 的依赖关系记录
  2. 动态改变_【清涧一小动态】改变从学习做起,教育从家庭出发——延安市家庭教育协会助力清涧县第一小学全方位提升育人水平...
  3. CVPR2020夜间行人检测挑战赛两冠一亚:DeepBlueAI获胜方案解读
  4. 中国首篇Science机器人子刊!北航软体机器人实验室四年成果登上封面长篇
  5. freemarker获取封装类中对象的属性(六)
  6. 今天开始学模式识别与机器学习Pattern Recognition and Machine Learning 书,章节1.1,多项式曲线拟合(Polynomial Curve Fitting)
  7. 【Cockpit】 如何组织管理多台服务器?
  8. PC寄存器为什么会被设定为线程私有
  9. 柱状图中xy轴怎么出现_如果制砂机设备在工作中出现堵料现象该怎么办?
  10. 森源电气持续押注光伏 加强市场竞争力
  11. springcloud(一):大话Spring Cloud
  12. linux如何更新数据包up,Linux更新(update/upgrade) 修改更新源
  13. 【报告分享】B站商业化探索频频,品牌方如何布局“小破站”营销.pdf
  14. 来自Transformer + Bert + GPT 的灵魂拷问
  15. ME909 ECM拨号上网总结
  16. swift 下标 subscript
  17. Python安装包时遇到There was a problem confirming the ssl certificate…的解决办法
  18. 【附源码】Python计算机毕业设计农田节水灌溉监测系统
  19. 远程连接android手机(调试)
  20. c语言str相关的函数

热门文章

  1. 基于flask让图标显示在浏览器的标签中(例3-10)
  2. mysql自动dump脚本_MySQL--简单mysqldump脚本
  3. 5种最流行的AI编程语言
  4. ORBSLAM2在Ubuntu14.04上详细配置流程
  5. 【风马一族_php】NO4_php基础知识
  6. 山石网科SG-6000-E5560配置SSL ***实例
  7. [PHP]对Json字符串解码返回NULL的一般解决方案
  8. 【闲聊产品】之七:投票真的有用么?
  9. .NET各版本一览表
  10. 关于javascript对象的prototype与constructor