Переутверждение по требованию сайта Next.js из метода сохранения модели Django

У меня есть сайт next.js, развернутый на Vercel, который получает данные из API, предоставляемого Django. Next.js имеет новую функцию (Incremental Static Regeneration On-Demand), с помощью которой вы можете перестроить определенную страницу без необходимости перестраивать весь сайт, используя url, подобный этому:

https://<my-site.com>/api/revalidate?secret=my-token

Мне нужно, чтобы сайт next.js перестраивал некоторые страницы при изменении базы данных, чтобы он показывал новые данные, и я попытался сделать запрос (с помощью пакета requests) в методе сохранения следующим образом:

def save(self, *args, **kwargs):
    super(MyModel, self).save(*args, **kwargs)
    r = requests.get("https://<my-site.com>/api/revalidate?secret=<my-token>")

Похоже, что он работает при вызове этого url из браузера, но он не работает, когда я вызываю его из Django. Ответом этого объекта Response (r) является код состояния 200, как и ожидалось, с {"revalidated":true} (r.text), но он все равно не обновляет сайт.

Как я могу это реализовать?

У меня была похожая проблема. Я думаю, что это не работало, потому что на самом деле вам нужно сохранить перед переоценкой.

Это сработало для меня:

def save(self, *args, **kwargs):
    try:
        return super().save(*args, **kwargs)
    finally:
        r = requests.get("https://<my-site.com>/api/revalidate?secret=<my-token>")
Вернуться на верх