Additional arguments for url lookup in sitemap index

38 views
Skip to first unread message

Sandro Covo

unread,
May 26, 2020, 8:33:42 AM5/26/20
to Django developers (Contributions to Django itself)
Hello,

I'm trying to add sitemaps on a per object base to my project. I have created a wrapper around sitemaps.views.sitemap that captures additional parameters to get the object and create the required sitemap. But I can't create a sitemap index, since the index views tries to resolve the sitemap view with only the section parameter.

The solution would be to allow additional parameters to the sitemaps.views.index function that would be used in the lookup for the section-urls. I created a branch and tried to implement this here: https://github.com/django/django/commit/d4ee80daabcf9af4e7cfe6b966522849e8018224

Not sure how to proceed from here, if you think that's ok I think I'll create a pull request?

Best regards
Sandro

Adam Johnson

unread,
May 26, 2020, 8:55:50 AM5/26/20
to django-d...@googlegroups.com
I'm trying to add sitemaps on a per object base to my project.

Can you explain this a little more? I don't follow what sitemap structure you're pursuing that's different to the default, nor why.

--
You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-develop...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/b74b4fe0-3479-4363-8169-0d5fe2ac122a%40googlegroups.com.


--
Adam

Sandro Covo

unread,
May 26, 2020, 9:34:35 AM5/26/20
to Django developers (Contributions to Django itself)
Sure, my urls look like this:
urlpatterns = (
    path
('<path:path>/', views.page_detail, name="page"),
    path
('<path:path>/sitemap.xml', cache_page(60*60)(views.sitemap_view),
         name
="sitemap-index"),
)

And i have this view for the sitemap_view, that creates the sitemap for each page under the path of the request.

def sitemap_view(request, path='/'):
    sitemaps
= {}

    top_page
= get_object_or_404(
       
Page.objects.active(),
        path
=f"/{path}/" if path else '/',
   
)

    sitemaps
['pages'] = PageSitemap(top_page)

   
for blog_page in top_page.descendants(include_self=True).filter(application='blog'):
        sitemaps
[blog_page.slug] = ArticleSitemap(blog_page)

   
for event_page in top_page.descendants(include_self=True).filter(application='events'):
        sitemaps
[event_page.slug] = EventSitemap(event_page)

   
for category_page in top_page.descendants(include_self=True).filter(application='categories'):
        sitemaps
[category_page.slug] = CategorySitemap(category_page)

   
return sitemap_view(
        request
, sitemaps,
   
)

So under one path lives a seperate structure that has different content.

Adam Johnson

unread,
May 26, 2020, 4:37:50 PM5/26/20
to django-d...@googlegroups.com
Oh I see. I think your sitemap structure is quite different to what Django's sitemaps index is intended for. I think it's probably better that you create your own index view based copy-pasting the built-in one, rather than adding extra parameters to it. It's not much code, and Django can't be infinitely flexible.

--
You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-develop...@googlegroups.com.


--
Adam
Reply all
Reply to author
Forward
0 new messages