Как я могу установить представления Django в зависимости от источника api?
Мне нужно показать мои django представления после входа в систему, когда api валидируется. Но я не могу этого обеспечить, потому что валидация из базы данных в django выполняется стандартными функциями django. Когда API, который я настроил с помощью Fastapi, кипит, я могу войти в систему, сгенерировав access_token
, но тогда я не могу авторизовать свои наборы представлений или поставить условие, например access_token_required
. Как вы думаете, как я могу этого добиться?
views.py
def _login(request):
if request.method == 'POST':
loginPayload = {
"username" : request.POST['username'],
"password" : request.POST['password']
}
loginActionResult = LoginAction(loginPayload).__login__()
actionResult = loginActionResult['result']
token = loginActionResult['detail']
if not actionResult:
messages.add_message(request, messages.ERROR, token)
else:
return redirect('chockindex')
return render(request, 'account/login.html',context = {
"loginform" : UserLoginForm()
})
@acces_token_required <========== I want to take a precaution like this
def owners(request):
return render(request, 'pages/owners.html')
и эта loginactionfunctions
class ApiUrls():
def __init__(self):
self.headersDefault = {
"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0",
"Content-Type" : "application/x-www-form-urlencoded",
"Accept-Language" : "tr-TR,tr;q=0.8,en-US;q=0.5,en;q=0.3",
"accept" : "application/json"
}
self.loginUrl = "http://127.0.0.1/login"
self.bonusRequestsUrl = "http://127.0.0.1/results"
class LoginAction(ApiUrls):
def __init__(self, loginPayload):
super().__init__()
self.loginPayload = loginPayload
def __login__(self):
loginRequest = requests.post(
url=self.loginUrl,
headers=self.headersDefault,
data=self.loginPayload
)
loginResponse = loginRequest.json()
try:
return {
"detail" : loginResponse['detail'],
"result" : False
}
except:
return {
"detail" : loginResponse['access_token'],
"result" : True
}
Ответ через API
{
"access_token" : "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhbHAiLCJleHAiOjE2Njc2Njk1MzJ9.D8s0XnYI1ib7KW18vCygc8LrO3xgSLJ4vF6CU78-9ng",
"type" : bearer
}