2023-02-14 18:53:57 +03:00
|
|
|
# Flask App Template
|
2023-02-17 16:49:41 +03:00
|
|
|
It is a simple Gitea template for a Flask web application.
|
|
|
|
|
|
|
|
|
|
|
|
## Features
|
|
|
|
- Basic Flask app
|
|
|
|
- `@route`s are defined in classes inherited from flaskapp.routes.Routes,
|
|
|
|
so they can be separated into multiple modules
|
|
|
|
- Flask WTForms extension
|
|
|
|
- MySQL/MariaDB database
|
|
|
|
- Gunicorn for production deployment
|
|
|
|
- AutoPEP8 formatter, MyPy and Pylint
|
|
|
|
- Dockerfile, compose YAML config
|
|
|
|
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
1. Create a repository from this template
|
|
|
|
2. For debugging, edit `.env_debug` file corresponding to
|
|
|
|
configuration of MySQL/MariaDB installed on your PC
|
|
|
|
3. Edit `pages.py`: add your own Flask routes
|
|
|
|
4. Edit or delete `admin.py` (its content is similar to `pages.py`)
|
|
|
|
5. Create your own Jinja templates in `templates/` directory,
|
|
|
|
I recommend to edit `base.html` and inherit other templates from it
|
|
|
|
6. Edit or delete `forms.py` (it is used for storing wtforms classes)
|
|
|
|
7. Edit routes, error pages and
|
|
|
|
(if needed) add other Flask extensions,
|
|
|
|
as described in the [next section](#add-routes-exts-error-pages)
|
|
|
|
8. Edit `db/schema.sql` corresponding to your database structure
|
|
|
|
9. Check `Makefile`, `Dockerfile`, `docker-compose.yml`
|
|
|
|
10. Run formatter and linters (`make format`, then `make check`)
|
|
|
|
|
|
|
|
|
|
|
|
## Add routes, exts, error pages
|
|
|
|
|
|
|
|
### To use your own routes file:
|
|
|
|
1. Create a file with the same content as `pages.py`
|
|
|
|
2. Give the `RoutePages` class another name
|
|
|
|
3. Edit `add_routes` method
|
|
|
|
4. Then, open `app.py`
|
|
|
|
5. Find the comment `# Add your routes...`
|
|
|
|
6. Import the created module (routes file)
|
|
|
|
7. Add the routes class from the module
|
|
|
|
to the `routes` list
|
|
|
|
|
|
|
|
### Custom error pages
|
|
|
|
1. Open `errors.py`
|
|
|
|
2. Find the comment `# Add other...`
|
|
|
|
3. Edit the list below corresponding to
|
|
|
|
which HTTP error pages you want to customize
|
|
|
|
4. Create templates for these errors,
|
|
|
|
e.g. `404.html` for custom 404 page
|
|
|
|
|
|
|
|
### Other Flask extensions
|
|
|
|
1. Open `exts.py`
|
|
|
|
2. Find the comment `# Add your extensions...`
|
|
|
|
3. Create extensions objects above, like for Flask-MySQL
|
|
|
|
4. Then edit the list below the comment
|
|
|
|
corresponding to the added extensions
|
|
|
|
|
|
|
|
|
|
|
|
## Makefile
|
|
|
|
Make commands:
|
|
|
|
|Command|Description|
|
|
|
|
|:-----:|:----------|
|
|
|
|
|`make format`|Format the code using AutoPEP8|
|
|
|
|
|`make check`|Check the code with linters (MyPy, Pylint)|
|
|
|
|
|`make dev`|Run the app in development mode|
|
|
|
|
|`make prod`|Run production server|
|
|
|
|
|`make docker`|Build a docker image from `Dockerfile`|
|
|
|
|
|`make clean`|Clean all cache|
|
|
|
|
|
|
|
|
|
|
|
|
## Publishing app
|
|
|
|
First of all, build an image: `make docker`
|
|
|
|
Follow [this documentation page](https://docs.docker.com/get-started/04_sharing_app/)
|
|
|
|
to upload your image to Docker Hub.
|