django - 从 url 捕获任意数量的值
问题描述
我在 Django 中创建了一个 url 模式,它在 url 中捕获一个类别并将其传递到视图中。例如 url mysite.com/category/shoes/匹配路径:
path('category/<category>/', views.Feed.as_view(), name='feed'),
category
它会将一个名为value的变量传递给视图"shoes"
。
现在我还想捕获子类别。类别和子类别将被组织为一个树结构,一个子类别中可能有更多的子类别。我如何编写一个 url 路径模式来捕获任意数量的嵌套子类别,例如:
mysite.com/category/shoes/winter/leather/...
以及如何将其传递给视图?
解决方案
这很简单。使用此语法:
path('category/<category>/<int:year>/<str:type>', views.Feed.as_view(), name='feed')
path('category/<category>/<str:type>/<int:size>', views.Feed.as_view(), name='feed-shoes')
您也可以使用查询参数并在视图中添加逻辑来提取它们。
path('category/$', views.Feed.as_view(), name='feed')
在您看来:
if request.GET.get('category', None) == 'shoes':
# check other params
另一个更好的做法是根据不同的类别拆分您的视图,编写一个可以接受任意数量的参数的视图是不好的做法。写出你的 URL 并拆分你的视图会更简单更好。
请参阅Django 文档
推荐阅读
- html - 带有对齐项目的谷歌浏览器中的问题:中心
- python - 递归读取python文件并在每个文件的输出存在后停止的bash脚本
- jenkins - 在 Jenkins 管道中启用远程触发构建(例如,从脚本)选项
- mercurial - openjdk8:使用 hg 从 Mercurial 下载
- javascript - 从 Firestore 获取数据后,无法在平面列表中显示数据
- python - 有没有办法修复这个隔离树代码?我收到 NameError: name 'classify_data' is not defined
- java - Java中的日期类型标准是什么?
- android-studio - ANDROID STUDIO:项目 Gradle 构建失败
- python - 根据定义的属性对变量列表进行分类
- mongodb - 在大型 mongodb 集合中搜索字符串(540GB / 40 亿个文档)