gpt4 book ai didi

django - 如何从模板中的 Django social-auth 获取特定提供者?

转载 作者:行者123 更新时间:2023-12-04 05:51:13 25 4
gpt4 key购买 nike

在安装和设置社交身份验证后,我正在玩一些游戏,试图掌握它的窍门。我已阅读文档,并使用示例项目使其运行。

但直到现在我都不知道如何获取某个提供商的信息。在示例项目中,模板标签总是这样使用:

{% for type, accounts in social_auth.associated.items %}
{% for account in accounts %}
{{account.provider}} is connected.
{% endfor %}
{% endfor %}

我现在想做的不是列出所有提供商,而是检查是否有人将他的帐户连接到(即)facebook。这样我就可以做这样的事情:
if user==connected_to_facebook
provide some functionality
endif

从上面的例子我知道 social_auth.related.items 包含 (type,account) 的元组,其中“facebook”将在一个列表中,其中包含 account.provider 的所有值.

我想到的是这个:
{% if "facebook" in social_auth.associated.items.accounts.provider %}

显然,这是行不通的。我认为这个会起作用,但不会返回我想要的结果:
{% if "facebook" in social_auth.associated.items[1].provider %}

Django 中是否有一些我可以使用的功能?也许我遗漏了一些特殊的模板标签?或者这个功能是否已经内置到 social_auth 中,我不知何故错过了文档?或者,我最怀疑的是,这真的很明显吗,我只是......

非常欢迎任何帮助。

最佳答案

“social_auth”不是元组内的一些元组,它是一个字典:

{'not_associated': {}, 'backends': {'oauth2': ['facebook']},
'associated': {'oauth2': [<UserSocialAuth:testuser>]}}

这当然更有意义,但仍然没有领先。因此,我查看了一个尚未关联其帐户的用户,该字典如下所示:
{'not_associated': {'oauth2': ['facebook']}, 'backends': {'oauth2': ['facebook']},
'associated': {}}

现在我发现了一些有用的东西:
{% if "facebook" in social_auth.not_associated.oauth2 %}
{% else %}
provide facebook functionality
{% endif %}

那个有效。您只需要知道您正在寻找的后端使用哪种类型的身份验证,然后确保它不在 social_auth 的 not_related 字段中。

关于django - 如何从模板中的 Django social-auth 获取特定提供者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10014501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com