Переутверждение по требованию сайта 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>")