J'essaie d'ajouter un plan du site à un chantier que j'ai construit (la première fois en utilisant le framework sitemaps à Djnago, donc je ne suis pas sûr à 100% de ce que je devrais faire).Sitemaps Django, deux pages utilisant le même objet
Quoi qu'il en soit, j'ai deux pages, une page «Détails du travail» et une page «Application». Ceux-ci sont basés sur le modèle Job et ont des URL référençant l'ID du travail.
urls.py
url(r'^job-details/(?P<pk>\d+)/$', views.JobDetailView.as_view(), name='job_detail') ,
url(r'apply/(?P<pk>\d+)/$', views.JobApplyView.as_view(), name='job_apply' ),
sitemap.py
class JobsSitemap(Sitemap):
changefreq = "daily"
priority = 0.5
def items(self):
return Job.objects.filter(active=True,
venue__contacts__account_verified=True,
date_expires__gte=date.today())
def lastmod(self, obj):
return obj.date_posted
models.py
class Job(models.Model):
... field definitions here ....
def get_absolute_url(self):
return reverse('job_detail', kwargs={'pk': self.id})
Maintenant, le problème est que je l'ai déjà indiqué get_absolute_url() sur le modèle d'emploi pour pointer vers la page de détails du travail. Donc, je ne peux pas pointer vers la page job_apply aussi bien.
J'ai essayé de le configurer selon la section "Sitemap pour les vues statiques" dans les docs, mais cela se plaint qu'il n'y ait pas de correspondance inverse pour cette URL (car elle attend l'argument kwargs).
Quelle est la manière correcte de traiter les pages basées sur le même objet?
ajouter une nouvelle méthode à votre modèle appelé get_apply_url et renvoyer l'URL job_apply ou de l'utilisation {% url "job_apply" job.pk%} dans votre template –
Cela n'aide pas, car je n'utilise aucun template, juste celui par défaut pour sitemaps.xml, et en regardant ça, il n'appelle pas get_absolute_url - il a passé un ensemble d'URL. get_absolute_url() est appelé par le code django, pas le mien. –
Vous pouvez définir votre propre classe CustomSitemap qui hérite de sitemaps.Sitemap et remplacer la méthode d'emplacement. – snakey