.. | ||
app | ||
config | ||
fonts | ||
migrations | ||
tests | ||
tmp_data | ||
.dockerignore | ||
.env.example | ||
.gitignore | ||
Dockerfile | ||
Dockerfile.nginx.prod | ||
Dockerfile.prod | ||
main.py | ||
nginx.conf | ||
pyproject.toml | ||
pytest.ini | ||
Readme.md | ||
requirements.txt | ||
setup.cfg |
Installation
Python 3.8 version is required.
python3 --version
Create virtual environment and install packages
virtualenv venv
source ./venv/bin/activate
pip install -r requirements.txt
Usage
Create .env
file and fill with similar data like .env.example
.
Then run application:
flask run
Testing
Run tests
pytest
Run all tests in specific python module
pytest ./tests/unit_tests/test_file.py
Run one test inside of python module
pytest ./tests/unit_tests/test_file.py::test_function_name
Format code:
black path/to/file.py
isort path/to/file.py
flake8
Useful commands:
Add new package
pip install NAME_OF_PACKAGE
Save new added package to requirements
pip freeze > requirements.txt
Flask commands:
Create the application structure directories
flask startapp NAME_OF_APP
Above command create package structure:
Create serializer in schemas.py
file:
from marshmallow import Schema, fields
class ExampleSchema(Schema):
id = fields.Integer()
name = fields.Str()
Create models in models.py
file:
from ..dependencies import db
class Example(db.Model):
__tablename__ = "examples"
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
title = db.Column(db.String(255), unique=True)
Create api routes in routes.py
file. You only have to register blueprint in app/__init__.py
.
from flask import Blueprint, make_response, jsonify, Response
bp = Blueprint("{name}", __name__, url_prefix="/{name}")
@bp.route("/", methods=["GET"])
def index() -> Response:
return make_response(jsonify({{"hello": "{name}"}}), 200)
Print all your routes
flask routes
Create migration, but first you have to create model
flask db migrate
Apply your changes to database, use after migration command
flask db upgrade
If you want back changes in your databases, use below command
flask db downgrade
Create empty migration, you can write manually migration here.
flask db revision