Django URL Regex未捕获到

2024-04-26 17:37:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将一个整数解析为url,所以我像这样构建我的url(有3个url,因为可以没有参数,place或place和一个整数)

urlpatterns = [
    url(r'^map/$', geov.map_view, name = "map_view"),
    url(r'^map/(?P<search_place>[^\.]+)/$', geov.map_view, name = "map_view_accurate"),
    url(r'^map/(?P<search_place>[^\.]+)/(?P<digit>\d+)/$', geov.map_view),
]

所以在我看来:

def map_view(request, search_place = None, digit = 0):
    results = {}
    print(digit)
    if search_place is not None:
        query = Place_search.objects.filter(name_lower__icontains=search_place.lower()).order_by("-importance")
        results["query"] = query
    else:
        points = Place.objects.all()
        lon = points.count()

        results["points"]=points
        results["lon"] = lon

    return render_to_response("index.html", results)

但是digit总是0,查询变量没有得到任何元素。如果我只使用第二个url(例如:本地主机:8000/地图/马德里“工作正常)


Tags: namenoneviewurlmapsearchplace整数
1条回答
网友
1楼 · 发布于 2024-04-26 17:37:23

第二个url的regexp通过第三个url捕获您想要捕获的内容,即使用斜杠和数字搜索位置,您应该将其更改为:

urlpatterns = [
    url(r'^map/$', geov.map_view, name = "map_view"),
    url(r'^map/(?P<search_place>[\w-]+)/$', geov.map_view, name = "map_view_accurate"),
    url(r'^map/(?P<search_place>[\w-]+)/(?P<digit>\d+)/$', geov.map_view),
]

相关问题 更多 >