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

1.2K
Views
Diferencia entre reverse() y reverse_lazy() en Django

Entiendo que podemos usar reverse() en FBV y reverse_lazy() en CBV. Entiendo que tenemos que usar reverse_lazy() en CBV ya que las URL no se cargan cuando se importa el archivo (Ref: Reverse_lazy and URL Loading? )

Lo que no entiendo es:

¿Cómo se cargan las urls cuando llamamos a reverse desde el FBV? Como cuando importamos las vistas en la parte superior de urls.py en una aplicación de Django, la lista de patrones de urlpatterns aún no se ha evaluado. ¿Cómo funciona reverse() para FBV pero no para CBV?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Considere estas dos formas de definir la URL_suceso. El primero está comentado, el segundo es la función:

 class NewJobCBV(LoginRequiredMixin, CreateView): template_name = 'company/job.html' form_class = newJobForm # success_url = reverse_lazy('newJob') def get_success_url(self, **kwargs): return reverse("newJob")

@CoffeeBasedLifeform: tiene razón, los atributos de clase se evalúan al importar, lo verifiqué después de leer su respuesta. Asi que,

  1. Si estamos usando success_url , tenemos que usar reverse_lazy() .
  2. Si estamos invirtiendo dentro de una función, podemos usar reverse() .

Ahora es cristalino.

Gracias CoffeeBasedLifeform :)

over 4 years ago · Santiago Trujillo Report

0

#importme.py def a(): print("FUNCTION HELLO") class B(): print("CLASS HELLO") >>> import importme >>> CLASS HELLO

Editar: La razón: el proceso de creación de clases implica ejecutar el cuerpo de la clase.

El cuerpo de la clase se ejecuta (aproximadamente) como exec(body, globals(), namespace) . [...] Una vez que el espacio de nombres de la clase se ha llenado ejecutando el cuerpo de la clase, el objeto de la clase se crea llamando a metaclass(name, bases, namespace, **kwds) .

https://docs.python.org/3/reference/datamodel.html?highlight=metaclass#ejecutando-el-cuerpo-de-clase



Mi texto de respuesta original. Puedes ignorarlo. Solo lo dejo porque el comentario de mirek fue una respuesta directa:

Los atributos de clase se evalúan en la importación. La respuesta a cuándo o exactamente cómo sucede eso reside en las profundidades del sistema de importación de python.

over 4 years ago · Santiago Trujillo Report

0

Solo entiende la diferencia:

reverse() devuelve una string & reverse_lazy() devuelve un <object>

over 4 years ago · Santiago Trujillo 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!