Readme: mariadb note, wtforms and database sections, app publishing; Makefile: docker-push
This commit is contained in:
parent
5516a7d29e
commit
dab01abf2b
2 changed files with 53 additions and 4 deletions
4
Makefile
4
Makefile
|
@ -16,6 +16,10 @@ docker:
|
||||||
python3 -m dotenv -f version_code run \
|
python3 -m dotenv -f version_code run \
|
||||||
docker build -t ${REPO_OWNER_LOWER}/${REPO_NAME_SNAKE}:$$VERSION .
|
docker build -t ${REPO_OWNER_LOWER}/${REPO_NAME_SNAKE}:$$VERSION .
|
||||||
|
|
||||||
|
docker-push:
|
||||||
|
python3 -m dotenv -f version_code run \
|
||||||
|
docker push ${REPO_OWNER_LOWER}/${REPO_NAME_SNAKE}:$$VERSION
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf app/__pycache__
|
rm -rf app/__pycache__
|
||||||
rm -rf app/*/__pycache__
|
rm -rf app/*/__pycache__
|
||||||
|
|
53
README.md
53
README.md
|
@ -19,6 +19,9 @@ Includes Jinja, WTForms, MySQL ORM and Docker.
|
||||||
2. For debugging, change the database connection parameters
|
2. For debugging, change the database connection parameters
|
||||||
in `.env_debug` file correspoding to the configuration
|
in `.env_debug` file correspoding to the configuration
|
||||||
of MariaDB/MySQL server on your PC
|
of MariaDB/MySQL server on your PC
|
||||||
|
1. If you have no MariaDB/MySQL test server installed,
|
||||||
|
search for "[mariadb install (your linux distro)](https://searx.dc09.ru/search?q=mariadb+install+ubuntu)",
|
||||||
|
for example: [an article on DigitalOcean for Ubuntu 22.04](https://url.dc09.ru/mdbu22do)
|
||||||
3. Edit app [paths](#paths),
|
3. Edit app [paths](#paths),
|
||||||
[custom error pages](#custom-error-pages)
|
[custom error pages](#custom-error-pages)
|
||||||
and [forms](#wtforms)
|
and [forms](#wtforms)
|
||||||
|
@ -118,10 +121,46 @@ but you can add your own:
|
||||||
3. Add (or remove) elements to the list below
|
3. Add (or remove) elements to the list below
|
||||||
|
|
||||||
### WTForms
|
### WTForms
|
||||||
TODO
|
[Related docs page](https://github.com/muicss/starlette-wtf/blob/master/README.md)
|
||||||
|
|
||||||
|
Each file in the `app/forms` directory
|
||||||
|
contains a WTForms class (or multiple classes).
|
||||||
|
You can simply copy `users.py` content
|
||||||
|
to create a form and use it in your project.
|
||||||
|
|
||||||
|
Also, there is one helper function in `__init__.py`
|
||||||
|
named `get_form` for instantiating WTForms class.
|
||||||
|
It should be preferred to the direct constructor call.
|
||||||
|
|
||||||
|
### Sample website
|
||||||
|
Included templates and CSS/JS files, paths, forms and SQL database
|
||||||
|
are related to the sample website (for showing how the template works)
|
||||||
|
and can be deleted or edited, except:
|
||||||
|
- `__init__.py`s
|
||||||
|
- `main.py`
|
||||||
|
- `common.py`
|
||||||
|
- `respond.py`
|
||||||
|
- `paths/errors.py`
|
||||||
|
|
||||||
### Database
|
### Database
|
||||||
TODO
|
[Related docs page](https://fastapi.tiangolo.com/tutorial/sql-databases/)
|
||||||
|
|
||||||
|
- SQLAlchemy models are stored in `app/sql/models.py`
|
||||||
|
- Pydantic models (schemas)
|
||||||
|
used for more handy SQLAlchemy models processing
|
||||||
|
are stored in `app/sql/schemas.py`
|
||||||
|
- Functions executing SQL CRUD requests
|
||||||
|
are stored in `app/sql/crud.py`
|
||||||
|
|
||||||
|
> **Note**
|
||||||
|
> As the official FastAPI documentation recommends (the link is above),
|
||||||
|
there are two schemas — `User` and `UserCreate` — for one `User` SQLAlchemy model.
|
||||||
|
> The first one is needed for SELECT requests,
|
||||||
|
and the second one is for INSERT requests (creating users).
|
||||||
|
> The first one contains all information about user,
|
||||||
|
but the second one (`UserCreate`) ommits `id` field,
|
||||||
|
because we don't want to specify an ID when creating a new user,
|
||||||
|
it will be generated automatically by the MariaDB server.
|
||||||
|
|
||||||
|
|
||||||
## Helper functions
|
## Helper functions
|
||||||
|
@ -235,6 +274,12 @@ Code is copied from the official docs.
|
||||||
|
|
||||||
|
|
||||||
## Publishing app
|
## Publishing app
|
||||||
First of all, build an image: `make docker`
|
First of all, check the `version_code` file and correct it if needed,
|
||||||
|
Then build a Docker image using `make docker` command.
|
||||||
|
|
||||||
Follow [this documentation page](https://docs.docker.com/get-started/04_sharing_app/)
|
Follow [this documentation page](https://docs.docker.com/get-started/04_sharing_app/)
|
||||||
to upload your image to Docker Hub.
|
to create an account in the Docker Hub.
|
||||||
|
|
||||||
|
To publish the image, you can use `make docker-push` command,
|
||||||
|
or manually enter the image name and its tag (version):
|
||||||
|
`docker push yourname/yourapp:tag`
|
||||||
|
|
Loading…
Reference in a new issue