Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

180
Views
Revalide bajo demanda un sitio Next.js desde el método de guardado del modelo Django

Tengo un sitio next.js implementado en Vercel, que obtiene datos de una API proporcionada por Django. Next.js tiene esta nueva función (regeneración estática incremental bajo demanda) en la que puede reconstruir una página específica sin necesidad de reconstruir todo el sitio con una URL como esta:

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

Necesito que el sitio next.js reconstruya algunas páginas cuando cambie la base de datos, para que muestre los nuevos datos, y traté de hacer una solicitud (con el paquete de solicitudes) en el método de guardado como este:

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

Parece funcionar cuando activo esa URL desde mi navegador, pero no funciona cuando lo activo desde Django. La respuesta de este objeto de respuesta (r) es un código de estado 200, como se esperaba, con {"revalidado": verdadero} (r.text), pero de todos modos no actualiza el sitio.

¿Cómo puedo implementar esto?

EDITAR: aquí está el código de pages/api/revalidate.js:

 export default async function handler(req, res) { if (req.query.secret !== process.env.MY_SECRET_TOKEN) { return res.status(401).json({ message: 'Invalid token' }) } try { await res.unstable_revalidate('/') await res.unstable_revalidate('/url') return res.json({ revalidated: true }) } catch (err) { return res.status(500).send('Error revalidating') } }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Tenía un problema similar. Creo que no estaba funcionando porque en realidad necesitas guardar antes de la revalidación.

Esto funcionó para mí:

 def save(self, *args, **kwargs): try: return super().save(*args, **kwargs) finally: r = requests.get("https://<my-site.com>/api/revalidate?secret=<my-token>")
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!