Проблема аутентификации Django - как я могу заставить активных пользователей сначала настроить профиль?
Я поставил себя в какой-то степени рассол. Я часто использую django-регистрацию, и, похоже, она подходит для большинства ситуаций. Однако я хочу потребовать, чтобы пользователи создали свой профиль (например, демографическую информацию), прежде чем они смогут посещать любые другие страницы.
Вот как я хочу запустить текущую настройку:
- посетитель заполняет регистрационную форму -(отправить)--->
- подтверждение электронной почты пользователя -(ссылка создает активного пользователя)--->
- -(перенаправлено на просмотр профиля)--->
- пользователь заполняет анкету -(отправить) ->
- пользователь теперь может получить доступ к остальной части сайта
Есть ли рекомендуемый способ сделать это?
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):
...