Не происходит перенаправления на следующую страницу после входа в систему в Rest Framework
Я пытаюсь перенаправить пользователя на главную страницу после успешного входа в API. Email id и пароль, которые приходят из Angular. Если пользователь существует в SQL, я хочу перенаправить его на главную страницу.
Однако, электронная почта и пароль уже существовали на SQL сервере, где я вызвал хранимую процедуру в Django rest framework.
Всего я просто хочу передать ввод пользователя вместо 'demouser@demo.com' и 'NewUser@1' в хранимую процедуру. Сейчас у меня есть жестко закодированные значения email и пароля, которые я предполагаю получить из POST запроса. Как я могу передать пост запрос в хранимую процедуру.
views.py
@api_view(['GET', 'POST'])
def CheckUserStatusView(request):
if request.method == 'GET':
users = Tblusers.objects.all()
serializer = CheckUserStatusSerializers(users, many=True)
return Response(serializer.data)
elif request.method == 'POST':
cursor = connection.cursor()
cursor.execute('EXEC [dbo].[sp_CheckOneQUserStatus] @EmailId=%s, @Password=%s', ('demouser@demo.com', 'NewUser@1'))
result_set = cursor.fetchall()
for row in result_set:
row[2]
if request.data.get('EmailId') == row[2]:
serializer = CheckUserStatusSerializers(data=request.data)
if serializer.is_valid():
serializer.save()
return HttpResponseRedirect(redirect_to='https://127.0.0.1:4200/#/dashboard')
# return Response(status=status.HTTP_308_PERMANENT_REDIRECT)
return Response(status=status.HTTP_201_CREATED)
serializers.py
class CheckUserStatusSerializers(serializers.ModelSerializer):
class Meta:
model = Tblusers
fields ='__all__'
models.py
class Tblusers(models.Model):
UserID = models.AutoField(db_column='UserID', primary_key=True)
FullName = models.CharField(db_column='FullName', max_length=255)
Emailid= models.CharField(db_column='AccentureID', max_length=255)
Password = models.CharField(db_column='Password', max_length=200)
Вы можете получить его из объекта запроса следующим образом
elif request.method == 'POST':
email = request.POST.get('email')
password = request.POST.get('password')
cursor = connection.cursor()
cursor.execute('EXEC [dbo].[sp_CheckOneQUserStatus] @EmailId=%s, @Password=%s', (email, password))
result_set = cursor.fetchall()
и я предлагаю попробовать использовать Django ORM это безопасно и не храните сырые пароли пользователей в таблице, попробуйте хэшировать их и хранить. Это хорошая практика.