django allauth在i18n之前或之后的账号?

时间:2016-01-19 01:31:27

标签: django django-allauth

我遇到了django allauth和i18n的一些问题。我在我的i18n网址中有帐户,因此它在网址后面有一个语言代码...

这很好用,它允许我像我想要的那样翻译帐户页面中的内容,我遇到的问题是,当我尝试进行社交登录时,特别是谷歌,帐户重定向URI包括语言代码...

/en/accounts/google/login/callkback

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

我该怎么办?

1 个答案:

答案 0 :(得分:1)

您只需使用urlpatternspatterns添加allauth,然后使用i18n_patterns添加到其他网址,以便django不会添加语言前缀到了allauth网址。

这是我的样子(我使用的是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()

您可以看到我在将网址添加到其他应用之前单独添加了python social auth url