我想SELECT
通过 URL 对查询进行(相当简单的)模拟。
例如,在博客引擎中,您希望/tag/sometag/
引用具有sometag
标签的帖子。除了其他更复杂的 url 之外,还/tag/sometag/or/tag/other/and/year/2013
应该是一个有效的 URL。因此,(理论上)对 url 的大小没有限制,我建议这应该递归地完成,但是在 Django URL 路由模型中如何处理呢?
我想SELECT
通过 URL 对查询进行(相当简单的)模拟。
例如,在博客引擎中,您希望/tag/sometag/
引用具有sometag
标签的帖子。除了其他更复杂的 url 之外,还/tag/sometag/or/tag/other/and/year/2013
应该是一个有效的 URL。因此,(理论上)对 url 的大小没有限制,我建议这应该递归地完成,但是在 Django URL 路由模型中如何处理呢?
我会为所有这些 URL 使用通用 URL 模式。
url(r'^query/([\w/]*)/$', 'app.views.view_with_query'),
您将收到所有“tag/sometag/or/tag/other/and/year/2013”作为视图的参数。
然后,您可以解析参数并提取信息(标签、值、标签、值、年份、值)以进行查询。
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',)
{}