【问题标题】:Extend django-invitations + django-allauth account adapter扩展 django-invitations + django-allauth 账户适配器
【发布时间】:2022-10-14 19:54:25
【问题描述】:

我正在使用 django-allauth 和 django-invitations。按照 django-allauth 的文档,我创建了一个自定义适配器,因此我可以覆盖 get_signup_redirect_url 方法

from allauth.account.adapter import DefaultAccountAdapter
class MyAccountAdapter(DefaultAccountAdapter):
    def get_login_redirect_url(self, request):
        # custom redirects here

然后在我的设置文件中

ACCOUNT_ADAPTER = 'accounts.adapter.MyAccountAdapter'

我也在使用 django-invitations,其文档说要与 allauth 集成,我需要设置

ACCOUNT_ADAPTER = 'invitations.models.InvitationsAdapter'

这显然会导致问题,因为那时我不再使用我的自定义适配器。

如何在覆盖适配器 get_login_redirect_url 方法的同时集成 django-allauth 和 django-invitations?

【问题讨论】:

    标签: django django-allauth django-invitations


    【解决方案1】:

    这就是我在 django-invitations v1.9 中解决问题的方法。希望它在不久的将来不相关。

    在我的项目中,我有一个“帐户”应用程序,其中放置了所有与帐户相关的文件。在应用程序的__init__.py 中,我放了以下令人愉快的猴子补丁?

    from invitations import adapters
    
    def new_get_invitations_adapter():
        from allauth.account.adapter import get_adapter
        return get_adapter()
    
    adapters.get_invitations_adapter = new_get_invitations_adapter
    

    它只是绕过了 django-invitations 逻辑,该逻辑通过始终返回一个 django-allauth 将使用来确定要使用哪个适配器。 django-allauth 返回自定义的,我在项目settings.py 中指定。

    ACCOUNT_ADAPTER = 'accounts.adapters.MyAccountAdapter'
    

    【讨论】:

      猜你喜欢
      • 2022-08-22
      • 2012-07-18
      • 2014-06-09
      • 2016-09-10
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2012-03-11
      • 2015-01-13
      相关资源
      最近更新 更多