django - Django - 如何将 URL 模式正则表达式与附加参数匹配?
问题描述
我的 urls.py 有以下端点
url(r'^stream/(?P<pk>[0-9a-f-]+)$', App_Views.stream, name='stream'),
这意味着端点在通话时看起来像这样:
http://localhost/stream/5409caac-fc9c-42b8-90af-058eff65a156
现在我在调用它之前向 URL 添加一些额外的参数,所以它看起来像这样:
http://localhost/stream/5409caac-fc9c-42b8-90af-058eff65a156?st=zD3H0cHJrbcUAHZPNbPGyg&e=1630915404
现在我的实际问题是,urls.py 的正则表达式必须看起来如何才能接受第二个 URL 示例?
解决方案
的用法已url()
被弃用。改为使用re_path()
。
鉴于这是您的网址:
http://localhost/stream/5409caac-fc9c-42b8-90af-058eff65a156?st=zD3H0cHJrbcUAHZPNbPGyg&e=1630915404
我假设额外的参数具体是:
?st=zD3H0cHJrbcUAHZPNbPGyg&e=1630915404
从字符开始的所有字符串?
已经是查询字符串参数的一部分。在 Django 中,URL 模式匹配只针对实际路径,不包括查询字符串。这记录在这里:
URLconf 搜索的内容
URLconf 搜索请求的 URL,作为一个普通的 Python 字符串。这不包括 GET 或 POST 参数或域名。
例如,在对 的请求中
https://www.example.com/myapp/
,URLconf 将查找myapp/
.在对 的请求中
https://www.example.com/myapp/?page=3
,URLconf 将查找myapp/
.URLconf 不查看请求方法。换句话说,所有请求方法——POST、GET、HEAD 等——都将被路由到同一个 URL 的同一个函数。
所以这应该仍然有效:
re_path(r'^stream/(?P<pk>[0-9a-f-]+)$', App_Views.stream, name='stream'),
如果您需要访问查询字符串的值,请request.GET
在接收视图中访问。
推荐阅读
- reactjs - 如何将数据从状态传递到 Formik 的初始值?
- android - 执行 com.android.build.gradle.internal.tasks.Workers$ActionFacade 时发生故障
- javascript - 如何更改可从 json 文件编程的 javascript 中的全局变量内容?
- javascript - 谷歌云功能,如何设置keyFile路径避免报错?
- javascript - 在 Monaco Editor 中自动触发滚动
- regex - 2个字符串之间的java正则表达式匹配字符串
- postgresql - TypeORM NestJS - 将实体数组保存到相关表中无法正常工作
- c# - 抛出异常而没有任何真正的错误?
- c - 为什么本地值不显示在我的调试器 qt 创建器上
- git - 如何将文本文件的github分支合并为一个文本