Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

139
Visualizações
Mapa del sitio y objeto con varias URL

La forma normal en que se usa el mapa del sitio en Django es:

 from django.contrib.sitemaps import Sitemap from schools.models import School class SchoolSitemap(Sitemap): changefreq = "weekly" priority = 0.6 def items(self): return School.objects.filter(status = 2)

y luego en el modelo de Escuela definimos:

 def get_absolute_url(self): return reverse('schools:school_about', kwargs={'school_id': self.pk})

En dicha implementación, tengo un enlace Acerca de para una escuela en sitemap.xml

El problema es que mi escuela tiene varias páginas: Acerca de, Profesores, Alumnos y otras, y me gustaría que todas se muestren en sitemap.xml

¿Cuál es el mejor enfoque para hacerlo?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Puede trabajar con el hecho de que los items pueden devolver cualquier cosa que se pueda pasar a los otros métodos de un Sitemap :

 import itertools class SchoolSitemap(Sitemap): # List method names from your objects that return the absolute URLs here FIELDS = ("get_absolute_url", "get_about_url", "get_teachers_url") changefreq = "weekly" priority = 0.6 def items(self): # This will return you all possible ("method_name", object) tuples instead of the # objects from the query set. The documentation says that this should be a list # rather than an iterator, hence the list() wrapper. return list(itertools.product(SchoolSitemap.FIELDS, School.objects.filter(status = 2))) def location(self, item): # Call method_name on the object and return its output return getattr(item[1], item[0])()

Si el número y los nombres de los campos no están predeterminados, optaría por un enfoque completamente dinámico: permita que los modelos tengan un método get_sitemap_urls que devuelva una lista de URL absolutas y use un Sitemap que ejecute este método. Es decir, en el caso más simple en el que no necesita tener acceso a los objetos en los métodos de prioridad/cambiofreq/lastmod:

 class SchoolSitemap(Sitemap): changefreq = "weekly" priority = 0.6 def items(self): return list( itertools.chain.from_iterable(( object.get_sitemap_urls() for object in School.objects.filter(status = 2))) ) def location(self, item): return item
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda