python - Django URL正则表达式不捕获Int

标签 python regex django

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

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)

但是数字始终为 0,并且查询变量没有获取任何元素。如果我只使用第二个网址(例如:“localhost:8000/map/madrid”,它可以正常工作)

最佳答案

您的第二个网址正则表达式捕获您想要通过第三个网址捕获的内容,即使用斜杠和数字搜索位置,您应该将其更改为:

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),
]

关于python - Django URL正则表达式不捕获Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33186619/

相关文章:

python - 如何使用noise.py模块选择种子

python - 递归函数完成后返回 0。为什么 'return 0' 不覆盖函数之前的返回值?

regex - 获取两个字符串之间的字符串 - 第一个字符串以换行符结尾

java - 正则表达式禁止访问父目录 - java

json - 生成的其余 api 没有 count 或 results 属性

python - 无法使用 python 社交身份验证设置自定义参数

python - erlang:如何通过其位置索引从列表中获取元素?

python - 在多处理中,为什么 1 个进程访问此队列时比多个进程更快?

regex - 任意长度的字符串和空格正则表达式

python - Django注册,模板