Django Sitemaps and “normal” views

后端 未结 2 1315
长发绾君心
长发绾君心 2021-01-30 11:34

Maybe I didn\'t understand the purpose of Sitemaps or maybe I didn\'t understand how to use sitemaps. Right now my sitemap is including all \"dynamically\" created pages, like t

相关标签:
2条回答
  • 2021-01-30 12:21

    I deal with it in this way:

    An abstract class for defining static page's attributes.

    class AbstractSitemapClass():
        changefreq = 'daily'
        url = None
        def get_absolute_url(self):
            return self.url
    

    The sitemap class for static pages:

    class StaticSitemap(Sitemap):
        pages = {
                 'home':'/', #Add more static pages here like this 'example':'url_of_example',
                 'contact':'/contact/',
                 }
        main_sitemaps = []
        for page in pages.keys():
            sitemap_class = AbstractSitemapClass()
            sitemap_class.url = pages[page]        
            main_sitemaps.append(sitemap_class)
    
        def items(self):
            return self.main_sitemaps    
        lastmod = datetime.datetime(2010, 8, 31)   #Enter the year,month, date you want in yout static page sitemap.
        priority = 1
        changefreq = "yearly"   
    

    Use this in the sitemaps dictionary to be used in urls.py:

    sitemaps = {
            'main':StaticSitemap,
            'flatpages':MyFlatPageSitemap,
            'model':PostSitemap,
            }
    
    0 讨论(0)
  • 2021-01-30 12:26

    Another simpler alternative:

    from django.core.urlresolvers import reverse
    from django.contrib.sitemaps import Sitemap
    
    
    class ViewSitemap(Sitemap):
        """Reverse 'static' views for XML sitemap."""
    
        def items(self):
            # Return list of url names for views to include in sitemap
            return ['homepage', 'news_article_list', 'contact_page']
    
        def location(self, item):
            return reverse(item)
    
    
    sitemaps = {'views': ViewSitemap}
    

    I've deliberately omitted lastmod and changefreq, as specifying incorrect/assumed data is worse than not including it.

    0 讨论(0)
提交回复
热议问题