Django从理论到实战(part8)--URL中添加参数
学习笔记,仅供参考
参考自: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中添加参数相关推荐
- Django从理论到实战(part14)--url反转
学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽 ...
- Django从理论到实战(part10)--URL命名与反转
学习笔记,仅供参考 参考自:Django打造大型企业官网: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽量详细的写 ...
- Django从理论到实战(part16)--指定默认的参数
学习笔记,仅供参考 参考自:Django打造大型企业官网: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽量详细的写 ...
- Django从理论到实战(part29)--Field的常用参数
学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: Field的常用参数 null 如果设置为True,Django将会在映射表的时候指定是否为空.默认是为False.在使用字 ...
- url get参数 php,怎么取得Url中Get参数
这次给大家带来怎么取得Url中Get参数,取得Url中Get参数的注意事项有哪些,下面就是实战案例,一起来看一下. 此时可以使用js的方式得到当前页面的url中的get参数. 核心语句是:window ...
- 如何获取URL中的参数
获取URL中的参数 1. 使用JS函数获取URL参数 使用示例 2. Angular应用中,从URL中获取参数信息的方法 使用示例 ActivatedRoute属性 1. 使用JS函数获取URL参数 ...
- 删除url中某个参数
这里的url 是指一个网站链接 例如: https://baidu.com?a=1&b=2 下面看一下封装的代码 <!DOCTYPE html> <html><h ...
- 解决JS在url中传递参数时参数包含中文乱码的问题
解决JS在url中传递参数时参数包含中文乱码的问题 参考文章: (1)解决JS在url中传递参数时参数包含中文乱码的问题 (2)https://www.cnblogs.com/xushengguan/ ...
- php获取url传递的参数,php解析url并得到url中的参数及获取url参数的四种方式
下面一段代码是php解析url并得到url中的参数,代码如下所示:<?php $url = "http://www.baidu.com/index.php?m=content& ...
最新文章
- ROS Melodic 的依赖关系记录
- 动态改变_【清涧一小动态】改变从学习做起,教育从家庭出发——延安市家庭教育协会助力清涧县第一小学全方位提升育人水平...
- CVPR2020夜间行人检测挑战赛两冠一亚:DeepBlueAI获胜方案解读
- 中国首篇Science机器人子刊!北航软体机器人实验室四年成果登上封面长篇
- freemarker获取封装类中对象的属性(六)
- 今天开始学模式识别与机器学习Pattern Recognition and Machine Learning 书,章节1.1,多项式曲线拟合(Polynomial Curve Fitting)
- 【Cockpit】 如何组织管理多台服务器?
- PC寄存器为什么会被设定为线程私有
- 柱状图中xy轴怎么出现_如果制砂机设备在工作中出现堵料现象该怎么办?
- 森源电气持续押注光伏 加强市场竞争力
- springcloud(一):大话Spring Cloud
- linux如何更新数据包up,Linux更新(update/upgrade) 修改更新源
- 【报告分享】B站商业化探索频频,品牌方如何布局“小破站”营销.pdf
- 来自Transformer + Bert + GPT 的灵魂拷问
- ME909 ECM拨号上网总结
- swift 下标 subscript
- Python安装包时遇到There was a problem confirming the ssl certificate…的解决办法
- 【附源码】Python计算机毕业设计农田节水灌溉监测系统
- 远程连接android手机(调试)
- c语言str相关的函数
热门文章
- 基于flask让图标显示在浏览器的标签中(例3-10)
- mysql自动dump脚本_MySQL--简单mysqldump脚本
- 5种最流行的AI编程语言
- ORBSLAM2在Ubuntu14.04上详细配置流程
- 【风马一族_php】NO4_php基础知识
- 山石网科SG-6000-E5560配置SSL ***实例
- [PHP]对Json字符串解码返回NULL的一般解决方案
- 【闲聊产品】之七:投票真的有用么?
- .NET各版本一览表
- 关于javascript对象的prototype与constructor