通常的方法是对路由声明进行排序,以便包罗万象的路由被/api
路线,即:
urlpatterns = patterns('',
url(r'^api/', include('api.urls')),
url(r'^other/', 'views.other', name='other'),
url(r'^.*$', 'views.catchall', name='catch-all'),
)
或者,如果由于某种原因您确实需要跳过某些路由,但无法使用 Django 支持的正则表达式集来完成此操作,您可以定义一个自定义模式匹配器类:
from django.core.urlresolvers import RegexURLPattern
class NoAPIPattern(RegexURLPattern):
def resolve(self, path):
if not path.startswith('api'):
return super(NoAPIPattern, self).resolve(path)
urlpatterns = patterns('',
url(r'^other/', 'views.other', name='other'),
NoAPIPattern(r'^.*$', 'views.catchall', name='catch-all'),
)