3

我想SELECT通过 URL 对查询进行(相当简单的)模拟。

例如,在博客引擎中,您希望/tag/sometag/引用具有sometag标签的帖子。除了其他更复杂的 url 之外,还/tag/sometag/or/tag/other/and/year/2013应该是一个有效的 URL。因此,(理论上)对 url 的大小没有限制,我建议这应该递归地完成,但是在 Django URL 路由模型中如何处理呢?

4

2 回答 2

4

我会为所有这些 URL 使用通用 URL 模式。

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

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

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

于 2013-05-29T14:06:17.620 回答
1

2021年更新

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

网址.py

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


urlpatterns = [
    re_path(r'^query/([\w/]*)/$', index, name='index'),
]

视图.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',)
{}
于 2021-05-02T12:46:15.897 回答