class APIUser(models.Model):
""" User Manager class for DatumAPI """
base_address = models.CharField(max_length=50)
username = models.CharField(max_length=20)
password = models.CharField(max_length=20)
_token = models.CharField(max_length=32, default="")
token_checker = models.CharField(max_length=32, default="***")
token_renewer = models.CharField(max_length=32, default="***")
def __str__(self):
return self.username
@property
def token_checker_url(self):
""" Mevcut _token in geçerli olduğunu kontrol etmek için url"""
return "**"
@property
def token_renewer_url(self):
""" Yeni _token oluşturmak için url"""
return "**"
@property
def token(self):
""" Diğer sınıflardan bu property çağırılacak """
print("self._token", self._token)
response = requests.post(self.token_checker_url, data={"**": self._token})
response = json.loads(response.text)
is_login = response["*"] # true false döndürüyor
if not is_login:
response = requests.post(self.token_renewer_url, data={"**": self.password})
response = json.loads(response.text)
is_login = response[""] # true false döndürüyor
if is_login:
self._token = response[**][**][**] # token çekip _token de kayıt etmeye çalışıyorum.
else:
self._token = "" #
print("self._token", self._token)
return self._token
Django ile Api üzerinden veri çektiğim bir uygulama yapıyorum. her gün kullanıcı için bir token alıp verilere ulaşmak için kullanmam gerekiyor. Yukarıdaki sınıfı bu kullanıcı verilerini saklamak için oluşturdum. istiyorumki oluşturulan 'token’i _token 'attribute’ü içerisinde saklayayım. token property’si her çağrıldığında kontrol etsin eğer _token geçerli ise bir şey yapmadan _token i döndürsün, geçerli değil ise yeni bir token oluşturup _token e kaydetsin ve _token i döndürsün.
Bu işlem için yukarıdaki kodu yazdım; ancak her seferinde yeni token oluşturuyor.
self._token = response[**][**][**]
bir işe yaramıyor. Sanırım bir setter yapmalıyım ama algoritmayı düşünemedim.
not: paylaşmak istemediğim yerlere ** koydum. bu haliyle ne yapmak istediğim anlaşılır olacaktır diye düşünüyorum. ancak yetersiz ise açıklama yapabilirim.