gpt4 book ai didi

Django URL - 如何通过干净的 URL 传递项目列表?

转载 作者:行者123 更新时间:2023-12-02 09:24:56 24 4
gpt4 key购买 nike

我需要实现与此类似的结构:example.com/folder1/folder2/folder3/../view(末尾可以有其他内容而不是“view”)

该结构的深度未知,并且可能有一个文件夹埋在树的深处。获得这个精确的 URL 模式至关重要,即我不能只使用 example.com/folder_id

关于如何使用 Django URL 调度程序实现此功能有什么想法吗?

最佳答案

Django 的 url 调度程序基于正则表达式,因此您可以为其提供一个正则表达式来匹配您想要的路径(带有重复组)。但是,我找不到一种方法让 django 的 url 调度程序匹配多个子组(它只返回最后一个匹配作为参数),因此一些参数处理留给了 View 。

下面是一个 url 模式示例:

urlpatterns = patterns('',
#...
(r'^(?P<foldersPath>(?:\w+/)+)(?P<action>\w+)', 'views.folder'),
)

在第一个参数中,我们有一个非捕获组,用于重复“单词”字符,后跟“/”。也许您想将\w 更改为其他内容以包含字母和数字以外的其他字符。

您当然可以在 url 配置中将其更改为多个 View ,而不是使用操作参数(如果您的操作集有限,这更有意义):

urlpatterns = patterns('',
#...
(r'^(?P<foldersPath>(?:\w+/)+)view', 'views.folder_View'),
(r'^(?P<foldersPath>(?:\w+/)+)delete', 'views.folder_delete'),
)

在 View 中,我们拆分第一个参数以获取文件夹数组:

def folder(request, foldersPath, action):
folders = foldersPath.split("/")[:-1]
print "folders:", folders, "action:", action
#...

关于Django URL - 如何通过干净的 URL 传递项目列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2360179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com