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

400
Views
¿Cuándo usar el método get_absolute_url() de Django?

La documentación de Django dice:

get_absolute_url() para decirle a Django cómo calcular la URL canónica de un objeto.

¿Qué significa URL canónica en este contexto?

Sé desde una perspectiva de SEO que la URL canónica significa elegir la mejor URL de las URL de aspecto similar ( example.com , example.com/index.html ). Pero este significado no encaja en este contexto.

Sé que este método proporciona alguna funcionalidad adicional en la administración de Django, redirección, etc. Y soy plenamente consciente de cómo usar este método.

Pero, ¿cuál es la filosofía detrás de esto? Nunca lo he usado en mis proyectos. ¿Sirve para algún propósito especial?

about 4 years ago · Santiago Trujillo
3 answers
Answer question

0

En primer lugar, cuando se trata de desarrollo web, realmente desea evitar rutas de codificación difíciles en sus plantillas. La razón de esto es que las rutas pueden cambiar, y será una molestia revisar todo su HTML y plantillas para encontrar cada URL o ruta y actualizarla manualmente. Hace que su código sea mucho más difícil de mantener.

La solución a esto es definir funciones que devuelvan la URL en su lugar. Aquí es donde get_absolute_url() entra en escena.

Ejemplo:

 <!-- Bad --> <a href="/language/category/product/{{product.pk}}">Link</a> <!-- Good --> <a href="{{product.get_absolute_url}}">Link</a>

URL canónica

Su segunda pregunta es qué es una URL canónica. Una URL canónica es la URL "oficial" de una página determinada. A veces, un activo se puede mostrar en varias URL diferentes, por ejemplo:

 /en/shoes/1-nike-shoes/ /en/shoes/1-nike-shoes?sort=price&order=asc /en/shoes/1-nike-shoes?sort=price&order=desc

Aquí tenemos el mismo activo mostrado en 3 URL diferentes. La "URL canónica" sería la que definimos como principal. Por ejemplo /en/shoes/1-nike-shoes/ .

Es muy útil para definir qué es una URL oficial o "principal" para un determinado activo. Le permitirá evitar contenido duplicado cuando los motores de búsqueda indexen su sitio web.

En el contexto de la cita que está utilizando de la documentación de Django. "Canonical" en este caso significa "la URL oficial donde se muestra este modelo".

about 4 years ago · Santiago Trujillo Report

0

Mira este ejemplo:

Quiero generar una URL única para cada producto, el patrón será: http://...../products/abcdefg/ (después de '/products/' es mi valor de slug).

En models.py, creé el 'get_absolute_url' que generará la URL en el patrón anterior

modelos.py

 class Products(models.Model): title = models.CharField(max_length=120) slug = models.SlugField(blank=True, unique=True) description = models.TextField() def get_absolute_url(self): return f"/products/{self.slug}/"

productlist.html - get_absolute_url referido en la etiqueta de anclaje

 {% for obj in object_list %} <a href="{{obj.get_absolute_url}} ">{{obj.title}}</a> <br> {% endfor %}

urls.py - mi patrón de URL

 path('/products/<slug>/', ProductDetails.as_view()),
about 4 years ago · Santiago Trujillo Report

0

Usted crea modelos para su sitio web. Cuando se crea una nueva instancia para un modelo, Django debe saber a dónde ir cuando se crea una nueva publicación o una nueva instancia.

Aquí get_absolute_url viene en la imagen. Le dice a Django a dónde ir cuando se crea una nueva publicación.

about 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!