Как получить пароль самолета пользователя Django admin в сигнале pre_save при создании пользователя из панели администратора?
Мне нужно регистрировать пользователей Django admin в 3ed party authentication service. Для этого мне нужен пароль на плоскости без хэширования. Здесь я использовал сигнал pre_save. Этот подход хорошо работает, когда я создаю конечную точку API для регистрации. Но когда я создаю пользователя администратора из Django, он всегда приходит с дефалютным хэшированным паролем.
Есть идеи, как получить пароль от самолета?
Вы должны получить доступ к объекту request, чтобы получить эти данные.
Вы можете использовать @hooks.register('before_create_user') для регистрации метода, который будет запущен перед созданием пользователя, и получить пароль с помощью password=request.POST['password1']. Имейте в виду, что этот хук запускается при загрузке формы, а также при ее отправке. Чтобы получить пароль, вам нужно запустить его только при отправке формы.
@hooks.register('before_create_user')
def before_create(request: 'HttpRequest') -> 'HttpResponse':
if request.method != 'POST':
return # Ignore execution when form loads
body = request.POST
form = get_user_creation_form()(body, request.FILES) # Get the associated form
if not form.is_valid():
return # If the form submission is invalid, return
password=body['password1'] # Get raw password