Проблема аутентификации Django - как я могу заставить активных пользователей сначала настроить профиль?

Я поставил себя в какой-то степени рассол. Я часто использую django-регистрацию, и, похоже, она подходит для большинства ситуаций. Однако я хочу потребовать, чтобы пользователи создали свой профиль (например, демографическую информацию), прежде чем они смогут посещать любые другие страницы.

Вот как я хочу запустить текущую настройку:

  1. посетитель заполняет регистрационную форму -(отправить)--->
  2. подтверждение электронной почты пользователя -(ссылка создает активного пользователя)--->
  3. -(перенаправлено на просмотр профиля)--->
  4. пользователь заполняет анкету -(отправить) ->
  5. пользователь теперь может получить доступ к остальной части сайта

Есть ли рекомендуемый способ сделать это?

1 ответ

Решение

Один из способов сделать это будет использовать свой собственный @profile_required декоратор, а не встроенный в Джанго login_required на все ваши взгляды.

@login_required
def profile_required(func,request,*args,**kwargs):
    has_profile = request.user.profile_set.count()
    if not has_profile:
        return redirect('create_profile')
    return func(request,*args,**kwargs)

Затем при каждом просмотре вы хотите, чтобы пользователь посещал профиль, просто:

@profile_required
def my_awesome_view(request):
    ...
Другие вопросы по тегам