我想在我的模板中显示current_user的图片.当我使用django-allauth时,如何访问用户的facebook id?
我正在使用django-allauth作为我的一个项目.我想通过ajax实现登录/注册过程.我想要自定义注册表单.我正在通过他们的signupmixin和注册表单.听起来我可以为每个动作编写自定义视图并将其映射到url配置.我不确定最好的方法是什么.
非常感谢您对此的任何帮助或建议.
django django-forms django-views django-authentication django-allauth
我正在编写一个Django应用程序,它使用django-allauth进行Facebook集成,并使用django-tastypie作为iOS应用程序的后端.iOS应用程序将使用原生Facebook iOS SDK.除了网站之外,我还希望能够从iOS应用程序中注册并验证Facebook和非Facebook用户.
问题是django-allauth似乎没有可以从外部访问的API.插入allauth功能的唯一简洁方法似乎是通过Django模板标签.有没有办法可以公开这个功能与tastypie一起使用?
Django-allauth都是开源的,所以我试图解析代码.我最初的想法是使用本机Facebook SDK对iOS端的用户进行身份验证,然后手动填写SocialAccount,SocialToken的信息,并将SocialAccount添加到SocialApp(这些都是django-allauth模型).然而,这似乎是一个非常糟糕的解决方案.我喜欢通过Facebook ID或类似方式干净地创建所有模型的方法.
更新:在GitHub上 有一些关于这个问题的讨论.基本上,还没有内置功能.我打算制定一个只处理Facebook的自定义解决方案(因为这就是我在我的应用程序中使用的所有内容).如果有效,我会发布我之后在这里做的.
如何向注册django应用程序的用户发送欢迎电子邮件(使用django-allauth).如果我设置ACCOUNT_EMAIL_VERIFICATION = ("mandatory"),它工作正常,用户会收到验证邮件.但由于我不需要任何电子邮件验证,因此用户只需注册并收到欢迎电子邮件.
settings.py-
ACCOUNT_AUTHENTICATION_METHOD = ("email")
ACCOUNT_EMAIL_VERIFICATION = ("none")
ACCOUNT_SIGNUP_PASSWORD_VERIFICATION = False
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USERNAME_REQUIRED = False
EMAIL_CONFIRMATION_SIGNUP = True
ACCOUNT_EMAIL_REQUIRED =True
LOGIN_REDIRECT_URL = '/'
LOGOUT_URL = '/'
ACCOUNT_LOGOUT_ON_GET =False
ACCOUNT_LOGOUT_REDIRECT_URL = '/'
SOCIALACCOUNT_QUERY_EMAIL = (ACCOUNT_EMAIL_REQUIRED)
SOCIALACCOUNT_AUTO_SIGNUP = True
SOCIALACCOUNT_AVATAR_SUPPORT = ( 'avatar' in INSTALLED_APPS)
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = '##'
EMAIL_HOST_PASSWORD = '##'
EMAIL_PORT = 587
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
Run Code Online (Sandbox Code Playgroud)
是否有任何我错过的设置发送欢迎注册邮件?或者我必须通过我的观点传递它?似乎无法找到解决方法.任何帮助都会很棒.谢谢.
我在我的模板文件夹中添加以下子文件夹和文件以覆盖电子邮件消息(以下文档https://github.com/pennersr/django-allauth#sending-e-mail)a:
templates/
account/
email/
email_confirmation_message.html
email_confirmation_message.txt
email_confirmation_subject.txt
Run Code Online (Sandbox Code Playgroud)
覆盖适用于*.txt版本的电子邮件(意思是,我认为,我有一个正确的文件夹结构)但我的问题是HTML版本不是由django_allauth发送的.
有谁知道在 django allauth 中使用社交帐户时如何绕过注册页面?
我已经与 Google 合作进行身份验证,但是当用户接受 Google 的请求时,它会重定向到一个页面,要求他们输入电子邮件地址,然后才能登录。
但它肯定会从 Google 登录中检索此信息,并且应该能够简单地让用户登录以便他们可以使用该网站吗?
我该怎么做呢?
谢谢。
我正在使用Facebook iOS SDK将Facebook Access Token发布到我的Django服务器URI.相应的views.py函数如下所示,当我从iOS执行POST时,我得到200响应代码.但是,我有第二个@login_required修饰的URI,我立即从iOS设备调用后认为我没有登录并将我重定向到我的主页面.我究竟做错了什么?从iOS成功发布POST后,如何"保持"登录状态?
# For POSTing the facebook token
from django.views.decorators.csrf import csrf_exempt
from allauth.socialaccount import providers
from allauth.socialaccount.models import SocialLogin, SocialToken, SocialApp
from allauth.socialaccount.providers.facebook.views import fb_complete_login
from allauth.socialaccount.helpers import complete_social_login
# Log in from Facebook
@csrf_exempt
def mobile_facebook_login(request):
response = HttpResponse() ## Create an HTTP Response Object
if request.method == "POST": # The method better be a POST
access_token = request.POST.get('access_token') # Get token
try:
app = SocialApp.objects.get(provider="facebook")
token = SocialToken(app=app, token=access_token)
# Check token against facebook …Run Code Online (Sandbox Code Playgroud) 在另一篇文章中,我提到我试图使用allauth的email_confirmed信号将确认用户的is_active字段更改为true.但是,以下代码给了我异常"用户匹配查询不存在".
from allauth.account.signals import email_confirmed
from django.dispatch import receiver
from django.contrib.auth.models import User
@receiver(email_confirmed)
def email_confirmed_(request, email_address, **kwargs):
user = User.objects.get(email=email_address)
user.is_active = True
user.save()
Run Code Online (Sandbox Code Playgroud)
我试图重新执行此操作,但仍然遇到类似的异常,"EmailAddress匹配查询不存在."
from allauth.account.signals import email_confirmed
from django.dispatch import receiver
from django.contrib.auth.models import User
from allauth.account.models import EmailAddress
@receiver(email_confirmed)
def email_confirmed_(request, email_address, **kwargs):
new_email_address = EmailAddress.objects.get(email=email_address)
user = User.objects.get(new_email_address.user)
user.is_active = True
user.save()
Run Code Online (Sandbox Code Playgroud)
Traceback在这里:
Environment:
Request Method: POST
Request URL: http://www.website.com/accounts/confirm-email/5901011619071fce757447ba146fe6312cb27bc0fee34d29665b857b479b49fc/
Django Version: 1.6.1
Python Version: 3.3.2
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages', …Run Code Online (Sandbox Code Playgroud) 我想覆盖外部应用程序的模板(allauth,安装在站点包中).不幸的是,我读过没有建议.我在笔记上添加了以下内容settings.py:
PROJECT_ROOT = os.path.normpath(os.path.dirname(os.path.abspath(__file__)))
TEMPLATE_DIRS = (os.path.join(PROJECT_ROOT, 'templates', 'allauth'))
Run Code Online (Sandbox Code Playgroud)
并将所有模板(此内容)复制到my_project_dir/templates/allauth.但是当我重新启动服务器并重新加载页面时,我只从站点包中的原始allauth应用程序获取渲染的模板,而不是我的自定义模板.任何提示?
我在迁移时遇到了ProgrammingError,我认为这可能与django-allauth与自定义用户的使用有关.这就是我的工作
1 /用psql创建一个新的数据库:
create database dj_example;
Run Code Online (Sandbox Code Playgroud)
2/Installed_apps包含django.contrib.sites:
DJANGO_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
)
THIRD_PARTY_APPS = (
'crispy_forms', # Form layouts
'allauth', # registration
'allauth.account', # registration
#'allauth.socialaccount', # registration
#'allauth.socialaccount.providers.twitter',
'djcelery', #Celery
)
LOCAL_APPS = (
'tucat.users', # custom users app
}
Run Code Online (Sandbox Code Playgroud)
3/site_id设置为1
SITE_ID = 1
Run Code Online (Sandbox Code Playgroud)
4 /自定义用户模型过于简单:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals, absolute_import
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
def __unicode__(self):
return self.username
Run Code Online (Sandbox Code Playgroud)
5/Makemigrations工作正常
# python manage.py makemigrations
Migrations for …Run Code Online (Sandbox Code Playgroud) django ×10
django-allauth ×10
python ×3
django-admin ×1
django-forms ×1
django-views ×1
facebook ×1
objective-c ×1
tastypie ×1