имам стандартни django 1.4 url модели:
urlpatterns = patterns('',
url('^',include('events.urls')),
url(r'^$', home, {'template_name':'index.html','mod':None}, name='home'),
url(r'^contact$',contact, {'template_name':'index.html',
'mod':'contacto'},name='contact'),
url('^task/(?P<task_id>[\w+-]+)',celery_tasks,name='tasks'),
)
Искам да създам моя sitemap.xml, като оставям някои URL адреси, например този /task url не трябва да се показва (няма смисъл за уеб паяците). Стратегията ми е да предавам всички URL модели на моя клас Sitemap, като този
from sitemaps import EventsSitemap, StaticSitemap
sitemaps = {
'Events': CandidateSiteMap,
'static': StaticSitemap(urlpatterns),
}
Както можете да видите, предавам моделите на класа, така че по-късно мога да филтрирам URL адресите по този начин
class StaticSitemap(Sitemap):
def __init__(self, patterns):
self.patterns = patterns
self._items = {}
self._initialize()
def _initialize(self):
do_not_show = ['tasks']
for p in self.patterns:
# no dynamic urls in this class (we handle those separately)
if not p.regex.groups:
if getattr(p,'name',False) and p.name not in do_not_show:
self._items[p.name] = self._get_modification_date(p)
Така че поддържам този списък с do_not_show url имена и така филтрирам url адреси, засега добре, проблемът е с включени url адреси като:
url('^',include('events.urls')),
Не мога просто да повторя self.patterns и да получа включените URL адреси, първо трябва да ги разширя, това е моят въпрос, как мога да направя това? Как мога да получа плосък списък с URL адреси, сякаш нямаше включени такива, всички бяха в един модул за URL адреси.
Всички препоръки за филтриране на URL адреси в sitemaps.xml ще бъдат високо оценени.