Ich versuche eine Sitemap zu einer Baustelle hinzuzufügen, die ich gebaut habe (das erste Mal mit dem Sitemaps-Framework in Djnago, also nicht 100% sicher, was ich tun sollte).Django Sitemaps, zwei Seiten mit dem gleichen Objekt
Wie auch immer, ich habe zwei Seiten, eine "Job Detail" Seite und eine "Job apply" Seite. Diese basieren beide auf dem Job-Modell und haben URLs, die auf die Job-ID verweisen.
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})
Nun das Problem ist, dass ich bereits angegeben get_absolute_url() auf dem Job-Modell um auf die Jobdetailseite zu zeigen. Also kann ich es auch nicht auf die Job_Apply-Seite verweisen.
Ich habe versucht, es nach dem Abschnitt "Sitemap für statische Ansichten" in den Dokumenten zu konfigurieren, aber das beschwert sich, dass es keine umgekehrte Übereinstimmung für diese URL gibt (da es das Argument Kwargs erwartet).
Was ist der richtige Umgang mit Seiten, die auf demselben Objekt basieren?
zu Ihrem Modell namens get_apply_url eine neue Methode hinzufügen und gibt die job_apply URL oder Verwendung {% url "job_apply" job.pk%} in Ihrer Vorlage –
Das hilft nicht, da ich keine Vorlage verwende, nur die Standardvorlage für sitemaps.xml, und wenn ich mir das anschaue, ruft sie get_absolute_url nicht auf - Es hat eine Reihe von URLs übergeben. get_absolute_url() wird von django code aufgerufen, nicht von mir. –
Sie können Ihre eigene CustomSitemap-Klasse definieren, die von sitemaps.Sitemap und der Überschreibungsortmethode erbt. – snakey