Django中的递归URL路由

时间:2013-05-29 12:35:10

标签: django url-routing

我希望通过网址({1}}查询(相当简单)进行模拟。

例如,在博客引擎中,您希望SELECT引用具有/tag/sometag/标记的帖子。此外,sometag应该是有效的网址,旁边是其他更复杂的网址。所以,(理论上)对url的大小没有限制,我建议这应该以递归方式完成,但是如何在Django URL Routing模型中处理呢?

2 个答案:

答案 0 :(得分:1)

我会为所有这些网址使用通用的网址格式。

url(r'^query/([\w/]*)/$', 'app.views.view_with_query'),

您将收到所有“tag / sometag /或/ tag / other / and / year / 2013”​​作为视图的参数。

然后,您可以解析参数并提取信息(标记,值,标记,值,年份,值)以进行查询。

答案 1 :(得分:1)

2021 年更新

django.conf.urls.url 在 3.1 及更高版本中已弃用。下面是django中递归url路由的解决方案:

<块引用>

urls.py

from django.urls import path, re_path
from .views import index


urlpatterns = [
    re_path(r'^query/([\w/]*)/$', index, name='index'),
]
<块引用>

views.py

from django.shortcuts import render, HttpResponse


# Create your views here.
def index(request, *args, **kwargs):
    print('-----')
    print(args)
    print(kwargs)
    return HttpResponse('<h1>hello world</h1>')

如果我调用 python manage.py run server,然后转到“http://127.0.0.1:8000/query/nice/”,我可以在终端中看到这些:

-----
('nice',)
{}