Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

HTML templates with just Python

Project description

Travis CI status

HTML templates with just Python.

Installing

Use pip to install the package:

pip install stempl

Example

For more examples checkout the tests file.

from flask import Flask
from stempl import *


app = Flask(__name__)


def render_head():
    with Head() as t:
        t << meta(charset='utf-8')
        t << meta(name='viewport', content='width=device-width, initial-scale=1, shrink-to-fit=no')
        t << title('Hello World')
        t << link(href='https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css', rel='stylesheet')
        t << script(src='https://code.jquery.com/jquery-3.3.1.slim.min.js')
        t << script(src='https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js')
        t << script(src='https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js')

    return t()


def render_navbar():
    with Ul(_class='navbar-nav') as u:
        u << li(a('Home', _class='nav-link', href='#'), _class='nav-item active')
        u << li(a('Features', _class='nav-link', href='#'), _class='nav-item active')
        u << li(a('Pricing', _class='nav-link', href='#'), _class='nav-item active')
        u << li(a('Disabled', _class='nav-link disabled', href='#'), _class='nav-item active')

    with Nav(_class='navbar navbar-expand-lg navbar-light bg-light') as n:
        n << a('Navbar', _class='navbar-brand', href='#')
        with Button(_class='navbar-toggler', type='button', data_toggle='collapse', data_target='#navbarNav') as b:
            b << span(_class='navbar-toggler-icon')
        n << b()
        n << div(u(), _class='collapse navbar-collapse', id='navbarNav')

    return n()


def layout(content):
    with Html() as h:
        h << render_head()
        with Body() as b:
            b << render_navbar()
            b << div(content, _class='container', id='main')
        h << b()

    return doctype() + h()


def index_template():
    with Div(id='index-page') as d:
        d << h1('Hello World')

    return layout(d)


@app.route('/', methods=['GET'])
def index():
    return index_template()


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=3000, debug=True)

Project details


Download files

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

Files for stempl, version 1.0.7
Filename, size File type Python version Upload date Hashes
Filename, size stempl-1.0.7.tar.gz (5.8 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page