def test_generic_sitemap_attributes(self): datetime_value = datetime.now() queryset = TestModel.objects.all() generic_sitemap = GenericSitemap( info_dict={ 'queryset': queryset, 'date_field': datetime_value, }, priority=0.6, changefreq='monthly', protocol='https', ) attr_values = ( ('date_field', datetime_value), ('priority', 0.6), ('changefreq', 'monthly'), ('protocol', 'https'), ) for attr_name, expected_value in attr_values: with self.subTest(attr_name=attr_name): self.assertEqual(getattr(generic_sitemap, attr_name), expected_value) self.assertCountEqual(generic_sitemap.queryset, queryset)
import django.views import django.contrib.auth.urls from django.contrib.sitemaps.views import sitemap as s from news import views from django.contrib.sitemaps import GenericSitemap from news.models import news from django.views.decorators.cache import cache_page from django.contrib.sitemaps import views as v from django.views import static as ds info_dict = { 'queryset': news.objects.all(), 'date_field': 'date', } sitemap = {'news': GenericSitemap(info_dict, priority=0.6, changefreq='daily')} urlpatterns = [ path('', include('news.urls')), path('admin/', admin.site.urls), path('mdeditor/', include('mdeditor.urls')), path('accounts/', include('django.contrib.auth.urls')), path('sitemap.xml/', s, {'sitemaps': sitemap}, name='django.contrib.sitemaps.views.sitemap'), path('sitemap-<int:section>\.xml', v.sitemap, {'sitemaps': sitemap}, name='django.contrib.sitemaps.views.sitemap'), ] if settings.DEBUG: # static files (images, css, javascript, etc.) urlpatterns += static(settings.MEDIA_URL,
urlpatterns = [ path('', include('django.contrib.auth.urls')), path('admin/', admin.site.urls), path('comptes/', include('accounts.urls')), path('', accueil, name='accueil'), path('nous_contacter/', ContactView.as_view(), name='contact'), path('', include('orgues.urls')), path('api-auth/', include('rest_framework.urls')), path('api/v1/', include(('project.api_urls', 'project'), namespace='api')), path('sitemap.xml', sitemap, { 'sitemaps': { 'orgues': GenericSitemap( { 'queryset': Orgue.objects.all(), 'date_field': 'modified_date' }, priority=0.6) } }, name='django.contrib.sitemaps.views.sitemap'), path('lexique/', TemplateView.as_view(template_name='lexique.html'), name='lexique'), path('error/403/', TemplateView.as_view(template_name='403.html'), name='403'), path('error/404/', TemplateView.as_view(template_name='404.html'), name='404'), path('error/500/',
from publish import models, categorie import settings admin.autodiscover() # Regex génériques # urlbegin_re = '([-\w]+/){0,%d}' % categorie.PROFONDEUR_MAX # Sitemap # info_dict = { 'queryset': models.Article.objects.filter(online=True), 'date_field': 'date_parution', } sitemaps = { 'blog': GenericSitemap(info_dict, priority=0.6), } urlpatterns = patterns('', # Index url(r'^$', direct_to_template, {'template': 'index.html', 'extra_context': {'edito' : models.Edito.objects.get_latest_publication()}}, name="index"), # Crawlers url(r'^sitemap.xml$', sitemap, {'sitemaps': sitemaps}, name="sitemap"), url(r'^robots.txt$', lambda _: HttpResponse('User-agent: *\nDisallow:\n', mimetype='text/plain')), #url(r'^favicon.ico$', lambda _: HttpResponseRedirect('%scss/images/logo.png' % settings.MEDIA_URL)), # Admin (r'^admin/doc/', include('django.contrib.admindocs.urls')), (r'^admin/(.*)', admin.site.root),
info_dict = { 'queryset': Post.objects.filter(published_date__lte=timezone.now(), private=False).order_by('-published_date'), } urlpatterns = [ # My Apps path('', include('blog.urls')), path('pages/', include('pages.urls')), path('polls/', include('polls.urls')), path('todo/', include('todo.urls')), path('s/', include('shortener.urls')), # Django Admin path('admin/doc/', include('django.contrib.admindocs.urls')), path('admin/', admin.site.urls), # User management path('users/', include('users.urls')), path('accounts/', include('allauth.urls')), # Markdownx path(r'markdownx/', include('markdownx.urls')), path('sitemap.xml', sitemap, {'sitemaps': {'blog': GenericSitemap(info_dict, priority=0.6)}}, name='django.contrib.sitemaps.views.sitemap'), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
path("__debug__/", include("debug_toolbar.urls")), path("administration/", admin.site.urls), path("", include("pages.urls")), path("search/", include("scrapers.urls")), path("tailored-vacancies/", include("resume_analyzer.urls")), path( "robots.txt", TemplateView.as_view(template_name="robots.txt", content_type="text/plain")), path( "sitemap.xml", sitemap, { "sitemaps": { "static": StaticViewSitemap, "dynamic": GenericSitemap({"queryset": Job.objects.all()}) } }, name="django.contrib.sitemaps.views.sitemap", ), path("api/", include("api.urls")), path("api/token/", TokenObtainPairView.as_view(), name="token_obtain_pair"), path("api/token/refresh/", TokenRefreshView.as_view(), name="token_refresh"), path("api/token/verify/", TokenVerifyView.as_view(), name="token_verify"), # Swagger UI for DRF. path("api/schema/", SpectacularAPIView.as_view(api_version="v3"), name="schema"),
path('imagegallery/', include('gallery.urls')), path('', include('newsroom.urls')), path('', include('payment.urls')), path('', include('letters.urls')), path('', include('agony.urls')), path('', include('socialmedia.urls')), path('', include('target.urls')), path('', include('sudoku.urls')), path('', include('analyzer.urls')), path('', include('security.urls')), path('', include('allauth_2fa.urls')), path('accounts/', include('allauth.urls')), url(r'^sitemap\.xml$', sitemap, {'sitemaps': {'articles': GenericSitemap(article_dict, priority=0.5), 'authors': GenericSitemap(author_dict, priority=0.5, changefreq='weekly'), 'photos': GenericSitemap(photo_dict, priority=0.5), 'flatpages': FlatPageSitemap}}, name='django.contrib.sitemaps.views.sitemap'), path('cache/', include('clearcache.urls', namespace="cache")), url(r'^robots\.txt', TemplateView.as_view(template_name='robots.txt', content_type='text/plain'), name='robots.txt'), url(r'^404testing', TemplateView.as_view(template_name='404.html'), name='test404'),
""" Sitemap for person pages app. """ from django.contrib.sitemaps import GenericSitemap from .models import PersonTag, TagGroup TagGroup_Sitemap = GenericSitemap({"queryset": TagGroup.objects.active()}) PersonTag_Sitemap = GenericSitemap({"queryset": PersonTag.objects.active()})
from django.contrib.sitemaps import GenericSitemap, Sitemap from django.urls import reverse from meetups.models import Meetup class ViewSitemap(Sitemap): url_names = [ 'misc:home', 'meetups:meetup_list', 'meetups:speaker_list', 'meetups:sponsor_list', ] def items(self): return self.url_names def location(self, item): return reverse(item) sitemaps = { 'views': ViewSitemap(), 'meetups': GenericSitemap(info_dict={'queryset': Meetup.objects.all()}), }
produit_dict = { 'queryset': Produit.objects.all(), 'date_field': 'date_creation', } structure_dict = { 'queryset': Structure.objects.all(), 'date_field': 'date_creation', } palylist_dict = { 'queryset': Playlist.objects.all(), 'date_field': 'date_creation', } musique_dict = { 'queryset': Musique.objects.all(), 'date_field': 'date_creation', } sitemaps = { 'sitemaps': { 'static': StaticViewSitemap, 'avis': GenericSitemap(avis_dict, priority=0.6), 'produits': GenericSitemap(produit_dict, priority=0.4), 'structures': GenericSitemap(structure_dict, priority=0.5), 'playlists': GenericSitemap(palylist_dict, priority=0.5), 'musiques': GenericSitemap(musique_dict, priority=0.4) } }
post_dict = { 'queryset': Post.objects.is_published(), 'date_field': 'updated', } # project_dict = { # 'queryset': Project.objects.is_published(), # 'date_field': 'modified', # } sitemaps = { # 'link': GenericSitemap(link_dict, priority=0.5), # 'photo': GenericSitemap(photo_dict, priority=0.5), # 'video': GenericSitemap(video_dict, priority=0.5), 'post': GenericSitemap(post_dict, priority=0.5), # 'project': GenericSitemap(project_dict, priority=0.5), 'flatpages': FlatPageSitemap, } # sitemaps_photos = { # 'photo': GenericSitemap(photo_dict, priority=0.5), # } # sitemaps_videos = { # 'video': GenericSitemap(video_dict, priority=0.5), # } sitemaps_sections = { # 'link': GenericSitemap(link_dict, priority=0.5), 'post': GenericSitemap(post_dict, priority=0.5),
from django.contrib.sitemaps import GenericSitemap from resources.models import Resource, Topic resource_dict = { 'queryset': Resource.objects.filter(show=True), 'date_field': 'updated_at', } topic_dict = { 'queryset': Topic.objects.all(), } sitemaps = { 'topic': GenericSitemap(topic_dict, priority=0.8), 'resource': GenericSitemap(resource_dict, priority=0.6), }
('/info/', '{0}/info.html'.format(settings.HTML_ROOT), 0.5), ] def location(self, item): return item[0] def lastmod(self, item): if item[1] is None: return None (mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime) = os.stat(item[1]) return datetime.datetime.fromtimestamp(mtime) def priority(self, item): return item[2] sitemaps = { 'ministri': GenericSitemap(ministr_dict, priority=0.8, changefreq='monthly'), 'pages': PagesSitemap(), } urlpatterns = [ url(r'^$', dluhy.views.index), url(r'^ministri/$', dluhy.views.ministri, name='ministri'), url(r'^info/$', dluhy.views.info, name='info'), url(r'^chart.js$', dluhy.views.chart), url(r'^ministri/(?P<slug>[^/]+)/$', dluhy.views.ministr, name='ministr'), # Sitemap url(r'^sitemap.xml$', django.contrib.sitemaps.views.index, {'sitemaps': sitemaps}), url(r'^sitemap-(?P<section>.+)\.xml$', django.contrib.sitemaps.views.sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'), # Example:
from django.conf import settings from django.conf.urls.static import static from blog.feed import LatestEntriesFeed from blog import views as blog_views from django.contrib.sitemaps import GenericSitemap from django.contrib.sitemaps.views import sitemap from blog.models import Entry info_dict = { 'queryset': Entry.objects.all(), 'date_field': 'modified_time' } urlpatterns = [ re_path(r'^$', blog_views.index), path('admin/', admin.site.urls), path('blog/', include('blog.urls')), re_path(r'^login/$', blog_views.login), re_path(r'^logout/$', blog_views.logout), re_path(r'^latest/feed/$', LatestEntriesFeed()), path('comments/', include('django_comments.urls')), re_path(r'^sitemap\.xml$', sitemap, {'sitemaps': {'blog': GenericSitemap(info_dict, priority=0.6)}}, name='django.contrib.sitemaps.views.sitemap'), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) handler403 = blog_views.permission_denied handler404 = blog_views.page_not_found handler500 = blog_views.page_error
class StaticSitemap(Sitemap): changefreq = 'weekly' priority = '0.8' def items(self): return ['/'] def location(self, item): return item sitemaps = { 'static': StaticSitemap, 'artigos': GenericSitemap(infodict_posts, priority=0.7, changefreq='weekly'), 'categories': GenericSitemap(infodicts_categories, priority=0.5, changefreq='monthly') } urlpatterns = [ path('', views.index, name='index'), path('artigos/', views.post_list, name='artigos'), path('artigo/<category>/<slug>/<pk>', views.post_details, name='artigo'), path('artigos/tag/<tag_name>', views.tag, name='post_by_tag'), path('categoria/<category_slug>', views.post_by_category, name='post_by_cat'), path('busca/', views.search, name='search'), path('contato/', views.contato, name='contato'), path('feed/', LatestEntriesFeed()),
from datetime import datetime from django.conf.urls import patterns, url from django.contrib.sitemaps import GenericSitemap from blogango import feeds from blogango.models import BlogEntry blog_info_dict = { 'queryset': BlogEntry.objects.all(), 'date_field': 'publish_date', } sitemaps = {'blog': GenericSitemap(blog_info_dict, priority=0.5)} urlpatterns = patterns( 'blogango.views', url(r'^$', 'index', name="blogango_index"), url(r'^install/$', 'install_blog', name='blogango_install'), url(r'^page/(?P<page>\d+)/$', 'index', name='blogango_page'), url(r'^(?P<year>\d{4})/(?P<month>\d+)/(?P<slug>[-\w]+)/$', 'details', name='blogango_details'), url(r'^blogroll/$', 'create_blogroll', name='blogango_blogroll'), url(r'^tag/(?P<tag_slug>[-\w]+)/$', 'tag_details', name='blogango_tag_details'), url(r'^tag/(?P<tag_slug>[-\w]+)/(?P<page>\d+)/$', 'tag_details', name='blogango_tag_details_page'), url(r'^author/(?P<username>[\w.@+-]+)/$', 'author', name='blogango_author_page'), url(r'^admin/$', 'admin_dashboard', name='blogango_admin_dashboard'),
blog_dict = { 'queryset': Post.objects.filter(status=Post.PUBLISHED), 'date_field': 'created', } page_dict = { 'queryset': Page.objects.filter(visible=True), 'date_field': 'created' } urlpatterns = [ path('sitemap.xml', sitemap, { 'sitemaps': { 'blog': GenericSitemap( blog_dict, priority=1, protocol='https'), 'page': GenericSitemap( page_dict, priority=0.5, protocol='https') } }, name='django.contrib.sitemaps.views.sitemap'), path('redactor/', include('redactor.urls')), path('cpadmin/', admin.site.urls), path('subscribe/', SubscriptionView.as_view(), name='subscription'), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) urlpatterns += i18n_patterns( path('notes/', include('apps.notes.urls', namespace='notes')), path('', include('apps.blog.urls', namespace='blog')), )
priority = 0.9 def items(self): ''' Return list of existing project, langauge tuples. ''' ret = [] for project in Project.objects.all_acl(None): for lang in project.get_languages(): ret.append((project, lang)) return ret def location(self, item): from django.core.urlresolvers import reverse return reverse('engage-lang', kwargs={ 'project': item[0].slug, 'lang': item[1].code }) sitemaps = { 'project': GenericSitemap(project_dict, priority=0.8), 'engage': EngageSitemap(project_dict, priority=1.0), 'engagelang': EngageLangSitemap(), 'subproject': GenericSitemap(subproject_dict, priority=0.6), 'translation': GenericSitemap(translation_dict, priority=0.2), 'user': GenericSitemap(user_dict, priority=0.1), 'pages': PagesSitemap(), }
from django.conf import settings from board.models import Post info_dict = { 'queryset': Post.objects.active().filter(), 'date_field': 'created_at', } urlpatterns = [ path('admin', admin.site.urls), # SEO 용 path('sitemap.xml', sitemap, {'sitemaps': { 'board': GenericSitemap(info_dict, priority=0.6) }}, name='django.contrib.sitemaps.views.sitemap'), path( 'robots.txt', lambda x: HttpResponse( "User-Agent: *\nDisallow: /admin/\nDisallow: /account/\nAllow: /", content_type="text/plain")), path( 'ads.txt', lambda x: HttpResponse( "google.com, pub-1987584597836949, DIRECT, f08c47fec0942fa0", content_type="text/plain")), path('notification', include('notification.urls')), path('', include('board.urls')), # 일반 로그인 path('accounts/', include('accounts.urls')),
sitemaps_lastmod_ascending = OrderedDict([ ('date', DateSiteMap), ('datetime', FixedLastmodSitemap), ('datetime-newer', FixedNewerLastmodSitemap), ]) sitemaps_lastmod_descending = OrderedDict([ ('datetime-newer', FixedNewerLastmodSitemap), ('datetime', FixedLastmodSitemap), ('date', DateSiteMap), ]) generic_sitemaps = { 'generic': GenericSitemap({'queryset': TestModel.objects.order_by('pk').all()}), } generic_sitemaps_lastmod = { 'generic': GenericSitemap({ 'queryset': TestModel.objects.order_by('pk').all(), 'date_field': 'lastmod', }), } urlpatterns = [ path('simple/index.xml', views.index, {'sitemaps': simple_sitemaps}), path('simple-paged/index.xml', views.index, {'sitemaps': simple_sitemaps_paged}), path('simple-not-callable/index.xml', views.index,
name='logout'), path('accounts/reset-password', auth_views.PasswordResetView.as_view(), name="password-reset"), path('accounts/reset-password-done', auth_views.PasswordResetDoneView.as_view(), name="password_reset_done"), path('accounts/reset-password-confirm/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'), path('accounts/reset-password-complete', auth_views.PasswordResetCompleteView.as_view(), name='password_reset_complete'), path('sitemap.xml', sitemap, { 'sitemaps': { 'home': IndexViewSitemap, 'pages': StaticViewSitemap, 'courses': GenericSitemap( {"queryset": CourseCode.objects.all()}) } }, name='django.contrib.sitemaps.views.sitemap'), path('oauth/', include('social_django.urls', namespace='social')), path('', include('scheduler.urls')), path('api/', include('api.urls')), path('rest-api/', include('api.rest_api.urls', namespace='course_api')), path('schedules-rest-api/', include('scheduler.rest_api.urls', namespace='rest_api_scheduler')), ]
# а также по одноимённому полю в модели забирается дата последней модификации sitemap_sections = { 'queryset': knowledge_models.Section.objects.all(), 'date_field': 'section_lastmod', } # А вот со статьями уже интереснее. Здесь забираются только те статьи, которые опубликованы # И для этого нужно будет написать специальный менеджер sitemap_articles = { 'queryset': knowledge_models.Article.objects.article_status(), 'date_field': 'article_date', } # Формируем объект со всеми картами и присваиваем им наименования sitemaps = { 'sections': GenericSitemap(sitemap_sections, priority=0.5), 'articles': GenericSitemap(sitemap_articles, priority=0.5), 'home': HomeSitemap } urlpatterns = [ url(r'^', include('home.urls', namespace='home')), url(r'^news/', include('knowledge.urls', namespace='news')), url(r'^admin/', admin.site.urls), ] # Шаблоны URL, заметьте, здесь указано кеширование cache_page(86400) # Первый шаблон будет формировать основную карту сайта, в которой будут указаны URL дочерних, # То есть 'sitemap-sections', 'sitemap-articles', 'sitemap-home'
from django.contrib.sitemaps import GenericSitemap from django.contrib.auth.models import User from okqa.qa.models import Question from okqa.user.candidates import candidate_group question_dict = { 'queryset': Question.objects.all(), 'date_field': 'updated_at', } candidate_dict = { 'queryset': User.objects.filter(groups__in=[candidate_group]), 'date_field': 'last_login', } sitemaps = { 'questions': GenericSitemap(question_dict, priority=1, changefreq='hourly'), 'candidates': GenericSitemap(candidate_dict, priority=0.6, changefreq='weekly'), }
from photographer.models import Photographer from guidebook.models import Guidebook from accounts.models import CustomUser from challenge.models import Challenge from sequence.models import Sequence, Image from tour.models import Tour from rest_framework_mvt.views import mvt_view_factory from django.contrib import admin as admin_tmp from accounts import views as account_views from . import views sitemaps = { 'static': StaticViewSitemap, 'profile': GenericSitemap({'queryset': CustomUser.objects.filter(is_active=True)}, priority=0.9), 'challenge': GenericSitemap({'queryset': Challenge.objects.filter(is_published=True)}, priority=0.9), 'guidebook': GenericSitemap({'queryset': Guidebook.objects.filter(is_published=True)}, priority=0.9), 'photographer': GenericSitemap( {'queryset': Photographer.objects.filter(is_published=True)}, priority=0.9), 'sequence': GenericSitemap({'queryset': Sequence.objects.filter(is_published=True)}, priority=0.9), 'tour': GenericSitemap({'queryset': Tour.objects.filter(is_published=True)},
priority = 1.0 changefreq = 'daily' def items(self): return ['index-view', 'news-view'] def location(self, item): return reverse(item) sitemaps = { 'article-is-top': GenericSitemap( { 'queryset': Article.objects.filter(status=0, is_top=True).all(), 'date_field': 'pub_time' }, priority=1.0, changefreq='daily'), 'article-is-not-top': GenericSitemap( { 'queryset': Article.objects.filter(status=0).all(), 'date_field': 'pub_time' }, priority=0.8, changefreq='daily'), 'news': GenericSitemap({ 'queryset': News.objects.all(), 'data_field': 'pub_time'
"""Sitemaps for Tags and Startups""" from django.contrib.sitemaps import GenericSitemap, Sitemap from .models import Startup, Tag TagSitemap = GenericSitemap({"queryset": Tag.objects.all()}) class StartupSitemap(Sitemap): """Sitemap for Startup pages""" def items(self): """All of our StartupSitemap Django uses get_absolute_url to generate links """ return Startup.objects.all() def lastmod(self, startup): """Use Startup or Newslink to indicate when page was last modified""" if startup.newslink_set.exists(): return startup.newslink_set.latest().pub_date else: return startup.founded_date
return article.pubdate else: return article.update def location(self, article): return article.get_absolute_url_online() sitemaps = { 'tutos': TutoSitemap, 'articles': ArticleSitemap, 'categories': GenericSitemap({'queryset': Category.objects.all()}, changefreq='yearly', priority=0.7), 'forums': GenericSitemap( { 'queryset': Forum.objects.filter(group__isnull=True).exclude( pk=settings.ZDS_APP['forum']['beta_forum_id']) }, changefreq='yearly', priority=0.7), 'topics': GenericSitemap( { 'queryset': Topic.objects.filter(
from django.contrib.sitemaps import views as sitemaps_views from django.views.decorators.cache import cache_page from .models import Entry from django.utils.functional import wraps router = DefaultRouter() router.register(r'user', UserViewSet) #router.register(r'order', OrderViewSet) # router.register(r'articles', ArticleViewSet) #router.register(r'profile', ProfileViewSet) sitemaps = { 'codeideas': GenericSitemap( { 'queryset': Entry.objects.get_queryset().order_by('id'), 'date_field': 'pub_date' }, priority=1.0), } def x_robots_tag(func): def inner(request, *args, **kwargs): responce = func(request, *args, **kwargs) responce['X-Robots-Tag'] = 'noodp, noarchive' return responce return wraps(func)(inner) urlpatterns = [
from django.conf.urls import url, include from django.conf.urls.static import static from django.contrib.staticfiles.urls import staticfiles_urlpatterns from django.conf import settings from django.urls import path from django.contrib import admin from article.views import SiteIndexView from django.contrib.sitemaps.views import sitemap from django.contrib.sitemaps import GenericSitemap from article.models import Article urlpatterns = [ path('', SiteIndexView.as_view(), name='home'), path('admin/', admin.site.urls), path('ckeditor/', include('ckeditor_uploader.urls')), path('articles/', include('article.urls.view_urls', 'article')), path('api/', include('article.urls.api_urls')), path('user/', include('user.urls', 'user')), path('sitemap.xml', sitemap, { 'sitemaps': { 'article': GenericSitemap(dict(queryset=Article.objects.all(), date_field='pub_date'), priority=0.6) } }, name='django.contrib.sitemaps.views.sitemap'), ] + static('/uploads', document_root=settings.CKEDITOR_UPLOAD_PATH) urlpatterns += staticfiles_urlpatterns()
def items(self): return User.objects.filter(is_active=True).order_by('-date_joined') def location(self, item): return reverse('account_profile_detail', kwargs={'username': item.username}) info_eureka = { 'queryset': Eureka.objects.filter(is_published=True).order_by('-published'), 'date_field': 'published', } info_concept = { 'queryset': Concept.objects.all().order_by('-created'), 'date_field': 'created', } sitemaps = { 'static': StaticViewSitemap, 'eureka': GenericSitemap(info_eureka, priority=0.8, changefreq='daily'), 'concept': GenericSitemap(info_concept, priority=0.7, changefreq='daily'), 'user': UserViewSitemap, } urlpatterns = [ url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'), ]