Python Django使用双斜杠匹配url,但不能不使用双斜杠

Python Django使用双斜杠匹配url,但不能不使用双斜杠,python,django,django-urls,Python,Django,Django Urls,我有以下URL.py: # ...imports... urlpatterns = [ url('', include('social.apps.django_app.urls', namespace='social')), url(r'^o/', include('oauth2_provider.urls', namespace='oauth2_provider')), url(r'^admin/', admin.site.urls,), url('', in

我有以下URL.py:

# ...imports...

urlpatterns = [
    url('', include('social.apps.django_app.urls', namespace='social')),
    url(r'^o/', include('oauth2_provider.urls', namespace='oauth2_provider')),
    url(r'^admin/', admin.site.urls,),
    url('', include('main.urls', namespace="main")),
]
main.url
如下所示:

# ...imports...
urlpatterns = [
    url(r'^confirmation_email$', views.email_confirmation_sent, name="confirmation_email"),
    url(r'^oauth_callback$', views.oauth_callback, name="oauth_callback"),
    url(r'^.*', views.index, name='index')
]
urlpatterns = [
    # authentication / association
    url(r'^login/(?P<backend>[^/]+){0}$'.format(extra), views.auth,
        name='begin'),
    url(r'^complete/(?P<backend>[^/]+){0}$'.format(extra), views.complete,
        name='complete'),
    # disconnection
    url(r'^disconnect/(?P<backend>[^/]+){0}$'.format(extra), views.disconnect,
        name='disconnect'),
    url(r'^disconnect/(?P<backend>[^/]+)/(?P<association_id>[^/]+){0}$'
        .format(extra), views.disconnect, name='disconnect_individual'),
]
我希望/oauth\u回调被路由到views.auth\u回调,但它不起作用。另一方面,//oauth_回调路由到那里。似乎隐式匹配的初始斜杠会被考虑两次

另一方面,“social.apps.django_app.url”看起来像这样:

# ...imports...
urlpatterns = [
    url(r'^confirmation_email$', views.email_confirmation_sent, name="confirmation_email"),
    url(r'^oauth_callback$', views.oauth_callback, name="oauth_callback"),
    url(r'^.*', views.index, name='index')
]
urlpatterns = [
    # authentication / association
    url(r'^login/(?P<backend>[^/]+){0}$'.format(extra), views.auth,
        name='begin'),
    url(r'^complete/(?P<backend>[^/]+){0}$'.format(extra), views.complete,
        name='complete'),
    # disconnection
    url(r'^disconnect/(?P<backend>[^/]+){0}$'.format(extra), views.disconnect,
        name='disconnect'),
    url(r'^disconnect/(?P<backend>[^/]+)/(?P<association_id>[^/]+){0}$'
        .format(extra), views.disconnect, name='disconnect_individual'),
]

我已检查request.path\u信息是否未更改。Nore是任何更改urlconf的中间件。

您的url模式在我看来是正常的,看起来
/oauth\u回调
应该解析为
视图。oauth\u回调
。仔细检查您是否实际运行了您认为是的代码,并且在任何代码更改后重新启动了服务器。@Alasdair是的,我在django shell中手动设置了url解析程序,它工作正常。因此,url解析程序可能在某个地方被更改,或者传递到其中的路径信息被更改。您能否打印
request.path
request.path\u info
request.META['SCRIPT\u NAME']
?我很抱歉对这个问题的答案感兴趣的人,但我只是神奇地修复了这个错误。我用monkeypatched
django.core.handlers.BaseHandler.get\u request
插入一些日志,它突然起了作用。甚至在删除monkeypatch之后,
main
social
的url模式都是相同的-这是故意的吗?