国际化之前或之后的 django allauth 帐户?

django allauth accounts before i18n or after?

我 运行 遇到 django allauth 和 i18n 的一些问题。我在 i18n urls 中有帐户,因此它在 url...

之后有一个语言代码

这很好用,它允许我按照自己的意愿翻译帐户页面中的内容,我遇到的问题是当我尝试进行社交登录时,尤其是使用 google 时,帐户重定向 URI 包括语言代码...

/en/accounts/google/login/callkback

这会导致 404,因为我在 google 重定向 URI 上没有该路径。到目前为止,我能看到的唯一解决方案是在 i18n 之外添加帐户 url 并失去翻译它们的能力,或者专门添加我在 google 重定向 URI 中提供的每种语言,这可能很乏味且可能不会在其他社交提供商上提供...

我该怎么办?

你必须使用 patterns 将 allauth 添加到 urlpatterns,然后使用 i18n_patterns 添加到其他 url,这样 django 就不会添加allauth 的语言前缀 urls.

这是我的样子(我使用的是 python 社交身份验证,但原理相同):

urlpatterns = patterns ('',
    url('', include('social.apps.django_app.urls', namespace='social')),
                        )

urlpatterns += i18n_patterns('',
    url(r'^', include('main.urls')),
    url(r'^', include('helpcenter.urls')),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^search/', include('search.urls')),
    url('', include('django.contrib.auth.urls', namespace='auth')),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)


urlpatterns += staticfiles_urlpatterns()

您可以看到,在将 url 添加到其他应用程序之前,我单独添加了 python 社交身份验证 url