Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 成功注册前重定向到自定义表单页面_Python_Django_Facebook_Authentication_Django Allauth - Fatal编程技术网

Python 成功注册前重定向到自定义表单页面

Python 成功注册前重定向到自定义表单页面,python,django,facebook,authentication,django-allauth,Python,Django,Facebook,Authentication,Django Allauth,在Facebook注册期间,我需要存储用户手机号码(必填字段)。我怎样才能做到这一点 我试图通过信号实现这一点,但我无法将页面重定向到所需的模板。虽然不推荐 @receiver(user_signed_up) def user_signed_up_(request, user, sociallogin=None, **kwargs): ''' When a social account is created successfully and this signal is rec

在Facebook注册期间,我需要存储用户手机号码(必填字段)。我怎样才能做到这一点

我试图通过信号实现这一点,但我无法将页面重定向到所需的模板。虽然不推荐

@receiver(user_signed_up)
def user_signed_up_(request, user, sociallogin=None, **kwargs):
    '''
     When a social account is created successfully and this signal is received,
     django-allauth passes in the sociallogin param, giving access to metadata on the remote account, e.g.:
    '''

    if sociallogin:

        if sociallogin.account.provider == 'facebook':
            user.first_name = sociallogin.account.extra_data['first_name']
            user.last_name = sociallogin.account.extra_data['last_name']
            user.username = sociallogin.account.extra_data['username']
            user.email = sociallogin.account.extra_data['email']
            print "%s => %s => %s" % (user.first_name, user.last_name, user.email)
            form = FacebookForm(
                {
                    "first_name": request.user.first_name,
                    "last_name": request.user.last_name,
                    "username": request.user.username,
                    "email": request.user.email,
                    "mobile_number": " "
                })
            user.save()
            #don't return value (below line don't work
            return render(request, "authentication/signup_form.html", {"form": form})
使用AccountAdapter,用户可以通过更改地址栏上的url绕过表单

class AccountAdapter(DefaultAccountAdapter):

        def get_login_redirect_url(self, request):
        # if request.user.last_login == request.user.date_joined:

            form = FacebookForm({"first_name": request.user.first_name,
                                 "last_name": request.user.last_name,
                                 "username": request.user.username,
                                 "email": request.user.email})
            print form
            return '/signup/'
forms.py

from django import forms


class FacebookForm(forms.Form):
    first_name = forms.CharField(30, required=True)
    last_name = forms.CharField(30, required=True)
    username = forms.CharField(30, required=True)
    email = forms.EmailField(required=True)
    mobile_number = forms.CharField(15, required=True)
url.py

...
url(r'^signup/', 'authentication.views.index', name="signup"),
...
身份验证/注册\u form.html

{% block main_content %}
<h1>After Facebook Login</h1>
    {% if form %}
        <form method="post" action=".">
        {% csrf_token %}
            {{ form.as_p }}
            <input value="Submit" type="submit">
        </form>
    {% endif %}
{% endblock %}
{%block main_content%}
登录Facebook后
{%if形式%}
{%csrf_令牌%}
{{form.as_p}}
{%endif%}
{%endblock%}
我需要的与eatwith.com类似