我在自定义 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) 我正在使用 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 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 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) 我看到Django的allauth支持使用自己的电子邮件地址,强制用户登录,并(从电子邮件地址,而不是生成一个自动)报名时不要求他们输入用户名- /sf/answers/1377847271/ 221001
是否可以让用户注册,手动输入电子邮件地址和用户名,然后允许他们使用任一登录?(例如,登录页面上有两个字段:“用户名或电子邮件”和“密码”)
我有 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)
请帮我解决这个问题。
我正在尝试在我的 Web 应用程序中设置社交注册(google、facebook、twitter)。我使用 Django Rest Framework 作为后端,使用 Angular2 作为前端。标准注册适用于 django-rest-auth。我想用 django-allauth 设置社交认证部分。社会认证场景是:
但首先,我不知道如何将用户重定向到 facebook 授权页面。当我访问http://localhost:8000/rest-auth/facebook/ 时,表单所需的数据是“访问令牌”和“代码”。但是要设置这些数据,我必须从 facebook 授权页面获取它们。我对吗?我该怎么做?如何将用户重定向到社交(facebook、google、twitter)授权页面?
django-rest-framework django-allauth django-rest-auth angular
我正在尝试使用 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
我正在使用 Django、django-allauth 和 django-invitations。我能够成功邀请用户加入平台,但我想将他们与邀请人的公司相关联。
我已经阅读了 bee-keeper/django-invitations,它似乎没有关于如何做到这一点的信息。
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)
@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) 我目前正在尝试实施 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-allauth ×10
django ×9
python ×4
angular ×1
facebook ×1
overriding ×1
sendgrid ×1
templates ×1