Я пытаюсь найти способ справиться с лицензиями для домашнего проекта в Джанго. Скажем, я хотел, чтобы клиенты платили за лицензию, и это позволяет им получать доступ к веб-сайту до истечения срока действия этой лицензии.
Существуют ли встроенные инструменты для обработки чего-то подобного в Django?
Сейчас все, что я могу придумать, - это создать новую модель "лицензии" с внешним ключом для моей модели клиента и полем даты и времени, а затем расширить модель клиента, чтобы проверить, действительна ли еще лицензия:
class License(models.Model):
customer = models.ForeignKey(
license_end = models.DateTimeField(default=timezone.now)
Тогда я бы расширил модель клиента этим методом:
def has_license(self, license):
try:
license = self.license.get(license=license)
except Exception:
return False
return license.license_end > timezone.now()
И я предполагаю, что в каждом представлении, ограниченном лицензией, мне нужно будет проверить if customer.has_license(license):
(передавая действующий объект лицензии).
Хотя может показаться, что я буду писать одни и те же несколько строк снова и снова для каждого представления, которое необходимо защитить.
Был бы более простой способ настроить это (или что-то подобное)?
Хотя это немного актуально, мне также пришлось бы придумать решение для лицензионных ключей и их аутентификации, это совершенно новый вопрос, поэтому я не буду включать его в этот вопрос.