Django Sitemaps和"正常"视图

Cla*_*ash 19 sitemap django

也许我不明白Sitemaps的目的,或者我不明白如何使用站点地图.现在我的站点地图包括所有"动态"创建的页面,如博客文章.但是如何添加像我的索引和联系页面这样的"静态"页面呢?或者这些观点不应该在站点地图中?我认为-all-页面应该在站点地图上.例如,我将如何包含此类视图

(r'^contact/', include('contact-recaptcha.urls')),
Run Code Online (Sandbox Code Playgroud)

如果没有查询集?

供参考:http://docs.djangoproject.com/en/dev/ref/contrib/sitemaps/

提前致谢!

Mat*_*tin 42

另一个更简单的选择:

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}
Run Code Online (Sandbox Code Playgroud)

我故意省略lastmod并且changefreq,作为指定不正确/假定数据比不包括情况变得更糟.

  • 干净的方法,现在在我的网站运行;)谢谢! (2认同)

cro*_*jer 14

我用这种方式处理它:

用于定义静态页面属性的抽象类.

class AbstractSitemapClass():
    changefreq = 'daily'
    url = None
    def get_absolute_url(self):
        return self.url
Run Code Online (Sandbox Code Playgroud)

静态页面的sitemap类:

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"   
Run Code Online (Sandbox Code Playgroud)

在站点地图字典中使用此字符在urls.py中使用:

sitemaps = {
        'main':StaticSitemap,
        'flatpages':MyFlatPageSitemap,
        'model':PostSitemap,
        }
Run Code Online (Sandbox Code Playgroud)