私は、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 リゾルバにリクエストを送信すると、一致するものが見つかりません。試した URL をデバッグすると、上記が次のように解決されます。
^api/ (?P<api_key>(.+))/ land-use/ [name='geoprocessing_land_use']
(?P<api_key>(.+))
との間のスペースに注意してくださいland-use
。インクルードごとにこれらのスペースが挿入されるのはなぜですか? また、一致させるにはどうすればよいですか?
アップデート
URL をハードコードする^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)))