Skip to main content

Sitemap generator for Python frameworks

Project description

Dynamic sitemap

Build Status codecov

A simple sitemap generator for Python projects.

Already implemented:

  • metaclass SitemapMeta
  • FlaskSitemap

Installation

  • using pip
pip install dynamic-sitemap

Usage

"Hello world" example:

from framework import Framework
from dynamic_sitemap import FrameworkSitemap

app = Framework(__name__)
sitemap = FrameworkSitemap(app, 'https://mysite.com')
sitemap.update()

Then run your server and visit http://mysite.com/sitemap.xml.

Basic example with some Models:

from framework import Framework
from dynamic_sitemap import FrameworkSitemap
from models import Post, Tag

app = Framework(__name__)
sitemap = FrameworkSitemap(app, 'https://mysite.com', orm='sqlalchemy')
sitemap.config.IGNORED.update(['/edit', '/upload'])
sitemap.config.TEMPLATE_FOLDER = 'templates'
sitemap.config.TIMEZONE = 'Europe/Moscow'
sitemap.update()
sitemap.add_elem('/faq', changefreq='monthly', priority=0.4)
sitemap.add_rule('/blog', Post, lastmod_attr='created', priority=1.0)
sitemap.add_rule('/blog/tag', Tag, changefreq='daily')

Also you can set configurations from your class (and it's preferred):

sm_logger = logging.getLogger('sitemap')
sm_logger.setLevel(30)

class Config:
    TEMPLATE_FOLDER = os.path.join(ROOT, 'app', 'templates')
    IGNORED = {'/admin', '/back-office', '/other-pages'}
    ALTER_PRIORITY = 0.1
    LOGGER = sm_logger

sitemap = FrameworkSitemap(app, 'https://myshop.org', config_obj=Config)
sitemap.add_elem('/about', changefreq='monthly', priority=0.4)
sitemap.add_rule('/goods', Product, loc_attr='id', lastmod_attr='updated')

Moreover you can get a static file by using:

sitemap.build_static()

Some important rules:

  • use update() method after setting configuration attributes directly (not need if you pass your config object to init)
  • use get_dynamic_rules() to see which urls you should add as a rule or to ignored
  • config.IGNORED has a priority over add_rule
  • use helpers.Model if your ORM is not supported

Not supported yet:

  • urls with more than 1 converter, such as /page/<int:user_id>/<str:slug>

Check out the Changelog

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dynamic-sitemap-0.1.0.dev2.tar.gz (11.4 kB view hashes)

Uploaded Source

Built Distribution

dynamic_sitemap-0.1.0.dev2-py3-none-any.whl (14.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page