将 Django 的 AllAuth 与 Jinja2 一起使用?

Posted

技术标签:

【中文标题】将 Django 的 AllAuth 与 Jinja2 一起使用?【英文标题】:Use Django's AllAuth with Jinja2? 【发布时间】:2017-12-23 19:01:49 【问题描述】:

在从 Django 模板迁移到 Jinja2 的巨大努力中,我遇到了一些问题。不幸的是(令人惊讶)我找不到太多关于此的信息。

主要问题是标签:

<a class="ui twitter button" href="% provider_login_url "twitter" method="oauth2" next="/photos/new" %">

Jinja2 无法识别:

django.template.exceptions.TemplateSyntaxError: ("Encountered unknown tag 'provider_login_url'.

一定有人成功地完成了这项工作。难道没有一种简单的方法可以让 jinja2 使用模板标签吗?使 3rd 方库与 jinja2 一起使用的通用方法是什么?

【问题讨论】:

【参考方案1】:

这是我使用的(注册为 jinja2 的 func),不确定它是否 100% 用作原生标签,但我还没有遇到任何问题。

def provider_login_url(request, provider_id, **kwargs):
    provider = providers.registry.by_id(provider_id) 
    query = kwargs
    if 'next' not in query:
       next_ = request.GET.get('next')
       if next_:
           query['next'] = next_
    else:
        if not query['next']:
           del query['next']
    return provider.get_login_url(request, **query)

【讨论】:

以上是关于将 Django 的 AllAuth 与 Jinja2 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

使用 react-google-login 和 django-allauth 刷新令牌

Django从零搭建个人博客 | 使用allauth插件管理用户登录与注册

django-allauth:将多个社交帐户链接到单个用户

如何编辑 django-allauth 默认模板?

使用 django-allauth 登录信号将用户重定向到另一个 url

无法覆盖 django-allauth 模板