0

Я создаю частичный конвейер, чтобы получить номер телефона пользователя при регистрации и пропустить шаг при последующих входах. Мой частичный трубопровод выглядит следующим образом:Частичный трубопровод, чтобы задать номер телефона пользователя

@partial 
def other_info(strategy, details, user=None, is_new=False, *args, **kwargs): 
    if is_new or not details.get('email'): 
     request = kwargs['request'] 
     return redirect('require_phone') 
    else: 
     return 

На page-welcome.html есть форма. Соответствующий вид выглядит следующим образом:

def require_phone(request): 
    if request.method == 'POST': 
     phone = request.POST.get('phone',None) 
     user = User.objects.get(username = request.user.username) 
     if phone is not None: 
      up = UserProfile.objects.get_or_create(user=request.user, 
                phone = phone) 
      up.save() 
     backend = request.session['partial_pipeline']['backend'] 
     return redirect('social:complete', backend=backend) 
    else: 
     return render(request,'app/page-welcome.html') 

Проблема заключается в том, объект запроса не правильно передается зрения и, следовательно, пользователь показывает анонимным. Я не могу получить доступ к объекту пользователя и, следовательно, не могу сохранить номер телефона.

ответ

0

Вы можете быть в состоянии получить пользователю

user = User.objects.get(id=request.session['partial_pipeline']['kwargs']['user']) 

, а затем обновить этот объект, вместо того, чтобы пытаться получить его от request (который не будет работать в течение трубопровода).

Смежные вопросы