Tina4Python - This is not another framework for Python
Project description
Tina4Python - This is not a framework for Python
Tina4Python is a light-weight routing and twig based templating system based on the Tina4 stack which allows you to write websites and API applications very quickly. .
System Requirements
- Install Poetry:
curl -sSL https://install.python-poetry.org | python3 -
- Install Jurigged (Enables Hot Reloading):
pip install jurigged
Quick Start
After installing poetry you can do the following:
poetry new project-name
cd project-name
poetry add tina4_python
Create an entry point for Tina4 called app.py
and add the following to the file
from tina4_python import *
Overview
The basic tina4 project uses an autoloader methodology from the src folder All the source folders you should need are created there and they are run from init.py
If you are developing on Tina4, make sure you copy the public folder from tina4_python into src
Installation
Windows
1.) Install Poetry:
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -
2.) Add the following path to the system PATH:
%APPDATA%\pypoetry\venv\Scripts
3.) Install Tina4Python and Jurigged:
poetry add tina4_python
poetry add jurigged
or
pip install tina4_python
pip install jurigged
Usage
After defining templates and routes, run the Tina4Python server:
- Normal Server:
poetry run
- Server with Hot Reloading:
poetry run jurigged main.py
- Server on a Specific Port:
poetry run app.py 7777
- Server with alternate language (for example fr = French):
poetry run main.py fr
Add more translations by going here
Templating
Tina4 uses Twig templating to provide a simple and efficient way to create web pages.
1.) Twig Files: Add your Twig files within the src/templates
folder. For instance, you might create files like index.twig
, base.twig
, etc., containing your HTML structure with Twig templating syntax for dynamic content.
2.) Using Twig: In these Twig files, you can use Twig syntax to embed dynamic content, control structures, variables, and more. For example:
<!-- index.twig -->
<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
</head>
<body>
<h1>Hello, {{ name }}!</h1>
</body>
</html>
Defining Routes
The routing in Tina4Python can be defined in the __init__.py
file or any file used as an entry point to your application. Tina4Python provides decorators to define routes easily.
1.) Creating Routes: Define routes using decorators from Tina4Python to handle HTTP requests.
Example:
from tina4_python.Router import get
from tina4_python.Response import Response
@get("/hello")
async def hello(request, response):
return response("Hello, World!")
This code creates a route for a GET request to /hello
, responding with "Hello, World!".
2.) Route Parameters: You can define route parameters by enclosing variables with curly braces { }. The parameters are passed to the function as arguments.
Example:
from tina4_python.Router import get
from tina4_python.Response import Response
@get("/hello/{name}")
async def greet(**params):
name = params['request'].params['name']
return params['response'](f"Hello, {name}!")
This code creates a route for a GET request to /hello/{name}
, where name
is a parameter in the URL. The function greet
accepts this parameter and responds with a personalized greeting.
Example:
- Visiting
/hello/John
will respond with "Hello, John!" - Visiting
/hello/Alice
will respond with "Hello, Alice!"
Features
Completed | To Do |
---|---|
Python pip package | Implement JWT for token handling |
Basic environment handling | |
Basic routing | OpenAPI (Swagger) |
Enhanced routing | |
CSS Support | |
Image Support | |
Localization | |
Error Pages | |
Template handling |
Building and Deployment
Using Python
- Building the package:
python3 -m pip install --upgrade build
python3 -m build
python3 -m pip install --upgrade twine
python3 -m twine upload dist/*
Using Poetry
- Building the package:
poetry build
- Publishing the package:
poetry publish
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for tina4_python-0.1.37-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e0446310029a17267db0e260ff74e9cabff089051db3b2552102347c3b1bea5d |
|
MD5 | 120a9cb3e07b26689c3da4d003d6b6dd |
|
BLAKE2b-256 | b89ffcd8a3845f7ef671480f5f311487d8fbed57db10d6543048faebf1bf618c |