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

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

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

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

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

1 Ответ

4 голосов
/ 18 июня 2011

Один из способов сделать это - использовать собственный декоратор @profile_required вместо встроенного в login_required django для всех ваших видов.

@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):
    ...
...