标签: django-allauth

django-allauth:如何修改电子邮件确认网址?

我在端口8001上运行django,而nginx正在端口80上处理webserver任务.nginx代理视图和一些REST api调用Django.我正在使用django-allauth进行用户注册/身份验证.

当新用户注册时,django-allauth会向用户发送一封包含点击链接的电子邮件.因为django在端口8001上运行,所以链接看起来像http://machine-hostname:8001/accounts/confirm-email/xxxxxxxxxxxxxx

如何让网址看起来像http://www.example.com/accounts/confirm-email/xxxxxxxx

谢谢!

python email django nginx django-allauth

8
推荐指数
1
解决办法
1810
查看次数

Django Allauth自定义登录不显示错误

我在我的项目中使用Django Allauth用户流.我已成功创建了自己的模板集,这些模板继承自标准的Allauth模板,它们的工作率为95%.但是,出于某种原因,我没有收到无效登录的错误.

如果我为用户输入"test @ email",我会收到"请输入有效的电子邮件地址"错误,但如果我输入的密码不正确的电子邮件,则只需重新加载页面,但不会出现错误.我已经在下面包含了带有{{ form.login.errors }}{{ form.password.errors }}标签的模板.

感谢所有指导,谢谢.

模板:

<div id="search_container">

            <div id="search_box_content">
                {% block page_content %}

                        <h4>Login</h4>

                            <form class="" id="user-form" method="POST" action="{% url 'account_login' %}">

                              {% csrf_token %}
                            <h1> {{ form.login.errors }}</h1>
                            <h1> {{ form.password.errors }}</h1>

                               <div class="input_class">

                                    <label for="login">Username: </label>
                            {{ form.login }}
                            </div>

                            <div class="input_class">
                              <label for="password">Password: </label>
                              {{ form.password }}
                            </div>
                            <div class="input_class" id="forgot_pass">
                              <label for="remember">
                              Remember Me? </label>
                            {{ form.remember }}
                            </div>
                              {% if redirect_field_value %}


                              <input type="hidden" name="{{ …
Run Code Online (Sandbox Code Playgroud)

html python django django-allauth

8
推荐指数
1
解决办法
2323
查看次数

如何在django allauth中更改activate_url的值?

我正在使用allauth,在注册后,用户会收到一封电子邮件,要求他们点击链接以验证他们的电子邮件地址.我想改变这个链接的价值.

我想改变它

http://localhost:8001/account/confirm-email/hy72ozw8b1cexuw2dsx4wwrmgzbmnyxx4clswh67tcvgyovg/
Run Code Online (Sandbox Code Playgroud)

http://localhost:8001/index.html#/verifyEmail/hy72ozw8b1cexuw2dsx4wwrmgzbmnyxx4clswh67tcvgyovg/
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?我看到该activate_url值正在email_confirmation_text.txt中使用

python django django-allauth

8
推荐指数
1
解决办法
1376
查看次数

如何使用django allauth创建合适的用户?

  • 如果我只是一个电子邮件地址
  • 如果我不关心密码atm(用户稍后将通过"令牌链接"登录)

在纯Django我会这样做:

from django.contrib.auth.models import User
user = User.objects.create_user(username=email, email=email)
Run Code Online (Sandbox Code Playgroud)

但是django allauth带来了这些EmailAdress东西.我是否也必须创建其中一个然后我很好?

from allauth.account.models import EmailAddress
EmailAddress.objects.create(user=user, email=email, primary=True, verified=False)
Run Code Online (Sandbox Code Playgroud)

我不想打破一些django allauth逻辑,现有的适配器方法不适合我的需要.

编辑:替换setup_user_emailEmailAddress

EDIT2:替换add_emailcreate,想要设置primary=True

django django-allauth

8
推荐指数
1
解决办法
1002
查看次数

添加第二个注册屏幕到社交注册allauth

我正在使用django allauth auth系统,我使用带有"next"参数的社交注册,如下所示:

<a data-provider="facebook"
   href="{% provider_login_url "facebook" method="oauth2" next=next %}">
Run Code Online (Sandbox Code Playgroud)

其中next是动态变量.

但是我想为这个过程注入第二个屏幕,要求提供一个phoner号码或其他信息.

我想我需要覆盖一个方法来重定向到第二个屏幕并将下一个参数传递给这个视图.

知道要覆盖哪种方法?

编辑:我想出了如何为"正常"注册流程执行此操作:

我重写了allauth.account.views.SignupView并添加了一个新方法:

class CustomSignupView(SignupView):
    def get_success_url(self):
        next_value = (get_next_redirect_url(self.request,
                                            self.redirect_field_name)
                      or self.success_url)
        ret = 'whatever/url?next=' + next_value
        return ret

signup = CustomSignupView.as_view()
Run Code Online (Sandbox Code Playgroud)

然后将自定义视图添加到我自己的帐户/注册URL文件中.

我无法在社交注册视图中找到该方法.有人知道在社交注册视图中评估下一个参数的位置吗?

EDIT2:

所以我做了一些挖掘.Flag用于sociallogin类方法:

@classmethod
def state_from_request(cls, request):
    if next_url:
        state['next'] = next_url
    return state
Run Code Online (Sandbox Code Playgroud)

之后,它将提供程序传递给helpers complete_social_login或complete_social_signup(当被调用时不确定).

最后有一个函数account/utils perform_login实际执行重定向.

不知道现在在哪里覆盖,仍在挖掘.

所以最后它来到:

socialaccount视图调用helpers.complete_social_signup,然后使用重定向URL调用完整注册.

我认为不得不覆盖该视图,然后通过我自己的完整社交注册方法.

EDIT3:

如果您启用了自动签名(我这样做),则永远不会调用SocialSignup ClassView,而是在socialaccount.helpers._process_signup中创建新用户.

django django-allauth

8
推荐指数
1
解决办法
248
查看次数

django allauth 自定义注册表单以分配不同的组

我在系统中有两种类型的用户,我想在注册时分配适当的组。参考如何在使用 django-allauth 时自定义用户配置文件,我想我可以覆盖注册表单并执行以下操作:

class CustomSignupForm(forms.Form):
    login_widget = forms.TextInput(attrs={'type': 'email',
                                              'placeholder': _('email'),
                                              'autofocus': 'autofocus',
                                              'class': 'form-control'
                                      })

    email = forms.EmailField(label='Email', widget=login_widget)
    password = PasswordField(label='Password', widget=forms.PasswordInput(attrs={'class': 'form-control'}))
    password2 = PasswordField(label='Re-type Password', widget=forms.PasswordInput(attrs={'class': 'form-control'}))

    def save(self, request, user):
        role = request.GET.get('type')
        print(role)
        group = role or "group1"
        g = Group.objects.get(name=group)
        user.groups.add(g)
        user.save()
Run Code Online (Sandbox Code Playgroud)

但我不断收到以下错误:

save() missing 1 required positional argument: 'user'
Run Code Online (Sandbox Code Playgroud)

此外,我已将 allauth 配置为使用电子邮件登录。

谢谢你的帮助。

django django-allauth

7
推荐指数
1
解决办法
2101
查看次数

Django AllAuth如何自定义您自己的HTML或CSS

{% extends "account/base.html" %}

{% load url from future %}
{% load i18n %}

{% block head_title %}{% trans "Signup" %}{% endblock %}

{% block content %}

</style>
<h1><b>Free Membership</b>Sign up Today</h1>
<h1>{% trans "Sign Up" %}</h1>

<p>{% blocktrans %}Already have an account? Then please <a href="{{ login_url }}">sign in</a>.{% endblocktrans %}</p>

<form class="signup" id="signup_form" method="post" action="{% url 'account_signup' %}">
  {% csrf_token %}
  {{ form.as_p }}
  {% if redirect_field_value %}
  <input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" />
  {% …
Run Code Online (Sandbox Code Playgroud)

django django-allauth

7
推荐指数
2
解决办法
2972
查看次数

Crispy 表单抛出 VariableDoesNotExist 错误,在表单上查找键 [html5_required] 失败

我使用 allauth 用电子邮件登录,并做了一个非常基本的自定义登录表单和 allauth 的模板覆盖并显示登录表单。点击 URL 会让我直接进入异常:

在 [{'True': True, 'False': False, 'None': None}, {'True': True, 'False': False, 'None': None, 'form 中查找键 [html5_required] 失败':,'form_show_errors':真,'form_show_labels':真,'label_class':'','field_class':''},{'forloop':{'parentloop':{},'counter0':1,' counter': 2, 'revcounter': 2, 'revcounter0': 1, 'first': False, 'last': False}, 'field': }, {}]

然后我必须继续调试器两次才能在表单上结束。

我试图寻找这个特定的[html5_required]标签/密钥,但没有找到任何人丢失相同的密钥。

我删除了自定义登录表单settings.py以查看是否存在问题,但这没有帮助。

我什至用一个简单的 ```ModelForm`` 测试它,只显示两个字段并遇到了同样的问题。

我已经尝试了两种:基于类的视图(用于登录)和基于函数的视图(用于配置文件),我在两者上都遇到了同样的问题。

设置.py:


INSTALLED_APPS = [
   ...
   'crispy_forms',
   'allauth',
   'allauth.account',
   'allauth.socialaccount',
   'allauth.socialaccount.providers.google',
   ...
]

CRISPY_TEMPLATE_PACK = 'bootstrap4'

ACCOUNT_FORMS = {
   "login": "users.forms.CustomLoginForm"
}
Run Code Online (Sandbox Code Playgroud)

表格.py

from django.utils.translation import ugettext as _
from django.urls import reverse_lazy …
Run Code Online (Sandbox Code Playgroud)

django django-crispy-forms django-allauth

7
推荐指数
1
解决办法
3824
查看次数

无法使用 dj-rest-auth + django-allauth 登录 Salesforce

我的应用程序有一个 Django 3.1 后端,带有django-allauthdj-rest-auth(积极支持django-rest-auth 的分支)。

我的移动和 Web 前端已经可以通过 REST 使用 Facebook 和 Google 登录。我现在正在尝试将 Salesforce 添加为第 3 种 REST 社交登录方法,但遇到了问题。

我已按照Salesforcedjango-allauth 说明进行操作

  • 使用 id 和 openid 范围(以及其他一些范围)创建了一个 Salesforce Connected App,并将回调 URL 设置为 https://www.mywebdomain.com/accounts/salesforce/login/callback/
  • 在 Django 中创建了一个 SocialApplication,在“Key”字段中使用客户端 ID、密码和登录 URL ( https://login.salesforce.com/ )
  • 在 INSTALLED_APPS 中包含 allauth.socialaccount.providers.salesforce

我一直在使用客户端JSforce在前端启动 Salesforce 身份验证请求,但如果其他方法更简单/更好/等,我愿意接受其他方法。

jsforce.browser.login()在我客户的 JS 代码中运行会打开 Salesforce 登录弹出窗口。输入 Salesforce 登录凭据后,Salesforce 系统重定向到我定义的回调 URL,从而生成一个显示以下文本的页面:

社交网络登录失败
尝试通过您的社交网络帐户登录时发生错误。

该页面地址栏中的 URL 如下所示:

https://www.mywebdomain.com/accounts/salesforce/login/callback/#access_token=00D3t000004QWRm%21ARwAQPfHWiM6jdB43dlyW6qjEw._34mjzGi_Jv6YCXp0QssT.9F9lCge5_YaH8gqTy3Od6SywCs8X9zOGv145SyviBVeGdn0&instance_url=https%3A%2F%2Fna123.salesforce.com&id=https%3A%2F%2Flogin.salesforce.com%2Fid%2F00D3t000004QWRmEAO%2F0053t000008QBetAAG&issued_at=1606802917608&signature=KvxAX0WBCFQYY%2BO25id9%2FXxpbh2q2d2vWdQ%2FFV5FCBw%3D&state=jsforce0.popup.c0ockgct29g&scope=id+api+web+refresh_token+openid&token_type=Bearer
Run Code Online (Sandbox Code Playgroud)

我试图调试,并在我的后台打印错误,但两者auth_error.code并 …

django salesforce django-allauth django-rest-auth jsforce

7
推荐指数
1
解决办法
213
查看次数

Django Allauth - ModuleNotFoundError:即使正确安装了 django-allauth,也没有名为“allauth.account.middleware”的模块

“ModuleNotFoundError:没有名为“allauth.account.middleware”的模块”

即使 django-allauth 已全部安装和设置,我仍然在 django 项目中收到此错误???

我什至尝试重新安装并将我的 python 更改为 python3 但没有更改任何内容,无法弄清楚为什么所有其他导入都可以工作,但中间件导入......

请帮忙?

设置.py:

"""
Django settings for youtube2blog2 project.

Generated by 'django-admin startproject' using Django 4.2.4.

For more information on this file, see

For the full list of settings and their values, see
"""

from pathlib import Path
import django
import os
import logging
import pyfiglet

import allauth

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent


# Quick-start development settings - unsuitable for production …
Run Code Online (Sandbox Code Playgroud)

python django django-settings python-3.x django-allauth

7
推荐指数
2
解决办法
9349
查看次数