我正在尝试使用Python Social Auth进行一个非常标准的Django注册过程。在我的例子中,用户:
1.选择他们的计划
1.选择他们的位置
1.创建一个帐户
我想通过Python Social Auth过程传递计划和位置。
我两个都试过了:
SOCIAL_AUTH_FIELDS_STORED_IN_SESSION = ['plan', 'location']
FIELDS_STORED_IN_SESSION = ['plan', 'location']
我两个都试过了:
<form action="{% url "social:complete" "email" %}?plan={{ plan }}&location={{ location }}" method="post" role="form">
以及:
<form action="{% url "social:complete" "email" %}" method="post" role="form">
<input type="hidden" name="plan" value="{{ plan }}" />
<input type="hidden" name="location" value="{{ location }}" />
在我的注册用户管道中,我尝试了这两种方法:
plan = strategy.session_get('plan', "trial")
以及:
plan = request.session['plan']
在任何情况下都不会传递变量。计划和位置总是无。我的注册用户在这里:
SOCIAL_AUTH_PIPELINE = (
#'social.pipeline.debug.debug',
'social.pipeline.social_auth.social_details',
'social.pipeline.social_auth.social_uid',
'social.pipeline.social_auth.auth_allowed',
'social.pipeline.social_auth.social_user',
'social.pipeline.user.get_username',
'social.pipeline.mail.mail_validation',
'social.pipeline.user.create_user',
'myproject.pipelines.register_user',
'social.pipeline.social_auth.associate_by_email',
'social.pipeline.social_auth.associate_user',
'social.pipeline.social_auth.load_extra_data',
'social.pipeline.user.user_details',
)
这似乎是一个非常常见的用例,非常困难。
1条答案
按热度按时间kq0g1dla1#
这是最常见的方法...首先在你的Django应用程序中创建一个名为
pipeline_user_plan.py
的部分管道在您的
settings.py
中假设在
urls.py
中,您有然后在您的
views.py
中这需要一个
forms.py
和模板
require-user-plan-form.html