An open API service indexing awesome lists of open source software.

https://github.com/odya-llc/flask_html

HTML generator for Flask applications. Make your HTML code more readable and easier to maintain.
https://github.com/odya-llc/flask_html

builder css css3 flask html html5 js odya python uzbekistan

Last synced: 12 months ago
JSON representation

HTML generator for Flask applications. Make your HTML code more readable and easier to maintain.

Awesome Lists containing this project

README

          

# Flask-HTML
![Flask](https://img.shields.io/static/v1?label=under&message=Development&color=yellow&logo=flask)
![GitHub top language](https://img.shields.io/github/languages/top/Odya-LLC/flask_html)
![LICENCE](https://img.shields.io/github/license/Odya-LLC/flask_html)
![Odya](https://img.shields.io/static/v1?label=Developed_by&message=Odya&color=green&logo=python)

HTML generator for Flask applications. Make your HTML code more readable and easier to maintain.
## Installation
```bash
pip install flask_html
```

## Usage

### Simple HTML

```python
from flask_html import Page, Head
from flask_html.core import Style
from flask_html.tags import Body, Div, P
from flask import request
@app.route('/')
def index():
head = Head('Title', ['link to css'],['link to js'], [{"meta_property": "value"}])
page = Page(head)
body = Body(page, styles=Style(color="red", padding_top="15px"),classes=['class1', 'class2'], id='body_id',elements=[
Div(styles=Style(margin="10px"), classes=['class1', 'class2'], id='div_id', elements=[
P(styles=Style(color="blue"), classes=['class1', 'class2'], id='p_id', elements=[
"Hello World"
])
])
])
return page.render(body, request)
```

### Using with listeners

Note: Jquery automatically injected

```python
opts = [Option('{}'.format(x),'Name {}'.format(x)) for x in range(10)]
sel = Select(opts).on('change', 'let val = $(this).val(); alert(val)')
page = Page(Head('Title', ['link to css'],['link to js'], [{"meta_property": "value"}]))
body = Body(page, elements=[
sel
])
return page.render(body, request)
```

## Elements

### Example of Div elements
```python
"""Div HTML element

Args:
styles (Style, optional): Inline css styles. Defaults to None.
classes (List[str], optional): List of class names. Defaults to [].
id (str, optional): Unique ID. Defaults to None.
elements (List[object], optional): List of child elements. Defaults to [].
props (Dict[str, str], optional): Additional tag properties. Defaults to {}.
"""
Div(styles=None, classes=[], id=None, elements=[], props={})
```
## To Do

- [x] All HTML tags
- [x] Inline CSS
- [x] Classes
- [x] ID
- [x] Child elements
- [x] Additional tag properties
- [x] JS
- [x] Meta tags
- [x] Link tags
- [x] Title
- [x] Head
- [x] Body
- [x] Page
- [x] Element event listeners
- [ ] DOM manipulation
- [ ] Converting js function to python functions
- [ ] More examples

## Contibuting

This package open to contributing. Fork, make changes and open pull request

## License
This project is licensed under the MIT License (see the `LICENSE` file for details).