我有一个我认为是我在 django 中构建的公共 API 的非常简单的 URL 配置:
# public API, in urls.py
(r'^api/', include('api.urls'))
# in api/urls.py
api_key_patterns = patterns('api.geoprocessing',
url(r'^land-use/', 'landUse', name='geoprocessing_land_use'))
urlpatterns = patterns('',
url(r'^(?P<api_key>(.+))/', include(api_key_patterns)))
但是,当我向/api/123/land-use/
Django 的 URL 解析器发出请求时,找不到匹配项。当我调试它尝试过的网址时,它会将上述问题解决为:
^api/ (?P<api_key>(.+))/ land-use/ [name='geoprocessing_land_use']
(?P<api_key>(.+))
注意和之间的空格land-use
。为什么要为每个包含插入这些空格,我怎样才能得到匹配?
更新
如果我硬编码一个网址,^api/(?P<api_key>(.+))/land-use/
我就能得到匹配。
/
此外,如果我在尾随URL 匹配后添加一个字符也可以:
api_key_patterns = patterns('api.geoprocessing', url(r'^and-use/$', 'landUse',name='geoprocessing_land_use'))
urlpatterns = patterns('', url(r'^(?P<api_key>(.+))/l', include(api_key_patterns)))