标签: django-allauth

Django AllAuth 自定义模板无法识别

我在自定义 Django-Allauth 模板时遇到了麻烦。可能是我的 TEMPLATE_DIRS 值有问题,或者是我不知道的问题。如果我将 TEMPLATE_DIRS 指向项目目录中的“Templates/AllAuth”文件夹,它会忽略我的自定义模板。现在,它忽略我当前的base.html 文件和我当前的signup.html/login.html 文件,即使报告说错误来自正确的文件/文件夹。我怎样才能解决这个问题?

Unclosed tag 'block'. Looking for one of: endblock 
Run Code Online (Sandbox Code Playgroud)

我当前的基本模板:

{% block content %}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

该错误发生在我的signup.html 页面上,如下所示:

{% load staticfiles %}

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>{% trans "Sign Up" %}</title>
<link rel="stylesheet" type="text/css" href="{% static "stylesheets/sign-up.css" %}" />
<link href="http://fonts.googleapis.com/css?family=Arvo:400,700|Open+Sans" rel="stylesheet" type="text/css" /> …
Run Code Online (Sandbox Code Playgroud)

python django templates overriding django-allauth

2
推荐指数
1
解决办法
1780
查看次数

防止 django-allauth 登录确认电子邮件

我正在使用 django-allauth 来处理我网站中的用户注册。我注意到一种奇怪的行为。假设我在网站上注册了一个新用户。该用户会收到一封带有点击链接的新电子邮件。当用户单击该链接时,他将进入确认页面。在那里用户单击确认按钮并确认用户电子邮件。

问题是,作为副作用,用户也登录了。我不想要那样。这仅在我第一次访问该页面时发生。如果我再次访问该页面并确认电子邮件,则用户不会自动登录。

我的问题是如何防止用户在第一次确认电子邮件时登录。我搜索了文档,但找不到任何设置来防止这种情况。我还查看了 ConfirmEmailView 的源代码,除了手动注释此行之外,我看不到关闭此行为的方法

resp = self.login_on_confirm(confirmation)
Run Code Online (Sandbox Code Playgroud)

更新:

我想我找到了解决问题的方法,而无需分叉或其他任何东西。我只是在我自己的视图文件中复制了该类,以确保我还导入了所需的所有其他依赖项。然后我只是删除了登录时的调用及其调用的函数。我希望我在这方面做得很好。之后,在我的 urls.py 中,就在导入 allauth 之前,我复制了用于确认电子邮件的行并将其重定向到我自己的视图。现在看起来像这样

url(r'^accounts/confirm-email/(?P<key>\w+)/$', 'userprofile.views.confirm_email',
                       name="account_confirm_email"),
Run Code Online (Sandbox Code Playgroud)

似乎有点hackish,但它似乎运作良好。我希望有人提出更好的解决方案。

django django-allauth

2
推荐指数
1
解决办法
2484
查看次数

Django allauth 推荐的删除社交帐户的方法

使用django allauth用户可以使用 Facebook 注册到我的网站。他们需要完成注册过程,在我的系统上创建一个帐户。

登录后,用户需要能够断开与 Facebook 的连接,但仍保留我网站的成员身份。

目前,我有一个视图,可以手动从数据库中删除社交帐户,但我注意到一些问题,如果您尝试再次添加社交帐户,则必须重新注册,这是不可能的(因为该帐户存在)。要再次添加社交帐户,我只需使用:

{% load socialaccount %}
<a href="{% provider_login_url "facebook" method="oauth2" %}">Facebook OAuth2</a>
Run Code Online (Sandbox Code Playgroud)

我阅读了文档,它在支持的流程中提到:

断开社交帐户

但是我找不到更多信息,并且 urls.py 中没有“删除”URL

我怀疑这与尝试连接帐户时登录的用户有关,因为当我尝试在注销时重新关联我的 FB 帐户(使用相同的 {% Socialaccount %} 链接)时,它工作正常(无需额外操作)需要注册)

我的问题是删除社交帐户的推荐方法是什么?

django facebook django-allauth

2
推荐指数
1
解决办法
3058
查看次数

Django allauth 重定向到注册

我正在使用 django all-auth 包来允许人们通过 g+ oauth2 登录。问题在于,在服务器上,登录会导致其重定向到 /accounts/social/signup 页面,而不是直接登录并返回主页。

这是所需的代码详细信息

设置.py

LOGIN_URL = '/accounts/google/login/'
LOGIN_REDIRECT_URL = '/'
SOCIALACCOUNT_QUERY_EMAIL = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_EMAIL_REQUIRED = True
SOCIALACCOUNT_PROVIDERS = {
    'google': {
    'SCOPE': [
    'https://www.googleapis.com/auth/userinfo.email',
     'https://www.googleapis.com/auth/userinfo.profile',
     'https://www.googleapis.com/auth/plus.login',
     'https://www.googleapis.com/auth/plus.me'
     ],
     'AUTH_PARAMS': {'access_type': 'online'}
    }
}
SOCIALACCOUNT_ADAPTER = 'lostndfound.views.LoginAdapter'
Run Code Online (Sandbox Code Playgroud)

LostndFound.views

class LoginAdapter(DefaultSocialAccountAdapter):
    def pre_social_login(self, request, sociallogin):
        user = sociallogin.account.user
        if user.email.split('@')[-1] not in settings.ALLOWED_LOGIN_HOSTS:
            messages.error(request, "You can login only through an *** account.")
            raise ImmediateHttpResponse(HttpResponseRedirect(reverse('home')))
Run Code Online (Sandbox Code Playgroud)

python django django-allauth

2
推荐指数
1
解决办法
2451
查看次数

接受用户名或电子邮件以使用django-allauth登录

我看到Django的allauth支持使用自己的电子邮件地址,强制用户登录,并(从电子邮件地址,而不是生成一个自动)报名时不要求他们输入用户名- /sf/answers/1377847271/ 221001

是否可以让用户注册,手动输入电子邮件地址和用户名,然后允许他们使用任一登录?(例如,登录页面上有两个字段:“用户名或电子邮件”和“密码”)

python authentication django django-allauth

2
推荐指数
1
解决办法
882
查看次数

Django 1.9 和 allauth 0.24.1

我有 Django 1.9

我按照此说明安装了 allauth 。但运行迁移后出现以下错误:

./manage.py migrate
Run Code Online (Sandbox Code Playgroud)

错误:

...
RuntimeError: Model class allauth.account.models.EmailAddress doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. 
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个问题。

python django django-allauth

2
推荐指数
1
解决办法
5198
查看次数

django-rest-auth + django-allauth + angular2

我正在尝试在我的 Web 应用程序中设置社交注册(google、facebook、twitter)。我使用 Django Rest Framework 作为后端,使用 Angular2 作为前端。标准注册适用于 django-rest-auth。我想用 django-allauth 设置社交认证部分。社会认证场景是:

  • 用户点击“使用 Facebook 登录”按钮
  • 他重定向到 Facebook 的授权页面
  • 他接受 Facebook 授权请求
  • 他在登录时被重定向回我的网络应用程序

但首先,我不知道如何将用户重定向到 facebook 授权页面。当我访问http://localhost:8000/rest-auth/facebook/ 时,表单所需的数据是“访问令牌”和“代码”。但是要设置这些数据,我必须从 facebook 授权页面获取它们。我对吗?我该怎么做?如何将用户重定向到社交(facebook、google、twitter)授权页面?

django-rest-framework django-allauth django-rest-auth angular

2
推荐指数
1
解决办法
1611
查看次数

如何测试电子邮件确认?

我正在尝试使用 django-rest-auth 测试电子邮件确认视图。这是我所拥有的:

def test_verify_email(self):
    # Verify email address
    username = 'userTest'
    payload = {
        'email': 'test@example.com',
        'password1': 'TestpassUltra1',
        'password2': 'TestpassUltra1',
        'username': username,
    }
    res = self.client.post(REGISTER_USER_URL, payload)

    self.assertEqual(res.status_code, status.HTTP_201_CREATED)
    user = get_user_model().objects.get(email='test@example.com')
    # TODO retrieve the confirmation key from the user
    resp = self.client.post(VERIFY_USER_URL, {'key': ''})
    self.assertEqual(resp.status_code, status.HTTP_200_OK)
Run Code Online (Sandbox Code Playgroud)

self.client.post(REGISTER_USER_URL, payload)将发送一封包含确认代码的电子邮件,虽然我知道我可以django.core.mail.outbox在代码中检索该代码,但我宁愿不这样做,因为我必须解析电子邮件内容以查找确认代码(如果电子邮件更改)。我找不到存储在数据库中任何位置的代码,它似乎确实只存在于发送的电子邮件正文中。

我的问题是:在我的测试中是否可以在不解析电子邮件的情况下恢复此验证码?我只是想找回它来启动我self.client.post(VERIFY_USER_URL, {'key': ''})的。

以下是电子邮件内容的示例:

Hello from example.com!

You're receiving this e-mail from NomadSpeed because user detro1 has given yours as an e-mail address to …
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework django-allauth django-rest-auth

2
推荐指数
1
解决办法
1430
查看次数

如何将受邀用户与邀请人的公司/群组关联?

我正在使用 Django、django-allauth 和 django-invitations。我能够成功邀请用户加入平台,但我想将他们与邀请人的公司相关联。

我已经阅读了 bee-keeper/django-invitations,它似乎没有关于如何做到这一点的信息。

模型.py

class Company(models.Model):
    name = models.CharField(max_length=100, default=None)

class CustomUser(AbstractUser):
    company = models.ForeignKey(Company, on_delete=models.CASCADE, blank=True, null=True)
    objects = CustomUserManager()
Run Code Online (Sandbox Code Playgroud)

视图.py

@login_required
def company_users(request):
    # Get users that are in the company's user database as well as users that have been invited
    company_users = CustomUser.objects.filter(company=request.user.company.id)
    Invitations = get_invitation_model()
    # I'm afraid this is going to get all invited users, not just those that belong to the company
    invited_users = Invitations.objects.filter()

    if request.method == 'POST':
        print(request.POST)
        invitees …
Run Code Online (Sandbox Code Playgroud)

django django-allauth

2
推荐指数
1
解决办法
462
查看次数

Django SendGrid + allauth

我目前正在尝试实施 SendGrid,以便为注册的社交帐户用户发送确认电子邮件,但出现以下错误

SMTPDataError at /accounts/facebook/login/callback/
(550, b'The from address does not match a verified Sender Identity. Mail cannot be sent until this error is resolved. Visit https://sendgrid.com/docs/for-developers/sending-email/sender-identity/ to see the Sender Identity requirements')
Run Code Online (Sandbox Code Playgroud)

我已经在 SendGrid 上完成了单一发件人验证,所以一切都应该没问题,但我也联系了 SendGrid 以防万一。以下是我的设置,以防万一我错过了什么?

EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'apikey' # this is exactly the value 'apikey'
EMAIL_HOST_PASSWORD = config('SENDGRID_API_KEY')
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
Run Code Online (Sandbox Code Playgroud)

很感谢任何形式的帮助。

django sendgrid django-allauth

2
推荐指数
1
解决办法
395
查看次数