interactive app like expressJs for flask.
Project description
flask-express
Downloads
contributor needed.
provide the interactive service like expressJs for the flask app.
Important Links
PYPI link
Github link
Documentation link
Basic installation
Use the package manager pip to install flask-express.
python3 -m pip install flask-express
Install from source code
git clone https://github.com/marktennyson/flask-express.git && cd flask-express/
python3 setup.py install
Introduction to Flask-Express
Flask-Express is here to give you people the feel like ExpressJs while using the Flask app. Basically you can use the default Request and Response as two parameters of the view functions.
Flask-Express comes with all the features of Flask with some extra features.
We are using the munch
module to provide the attribute-style access very similar to the Javascript.
I think this is enough for the introdunction, let's play with the examples mentioned below.
Examples and Usages
Basic example:
inbuilt flask_express.FlaskExpress class
from flask_express import FlaskExpress
app = FlaskExpress(__name__)
@app.get("/")
def index(req, res):
return res.json(req.header)
Now the flask 2.0 support the asynchronus view function. You can implement this with flask-express too.
from flask_express import FlaskExpress
app = FlaskExpress(__name__)
@app.get("/")
async def index(req, res):
return res.json(req.header)
You can use the python typing for a better view of the codes and auto completion.
from flask_express import FlaskExpress
from flask_express.typing import Request, Response
app = FlaskExpress(__name__)
@app.get("/")
def index(req:Request, res:Response):
return res.json(req.header)
Basic Documentation
The official and full documentation for this project is available at: https://marktennyson.github.io/flask-express. Here I have tried to provide some of the basic features of this project here.
Request class:
N.B: all of the properties of the Request class will return an instance of Munch. This will provide you the feel of the Javascript object.
property - json
So if your app is receiving data as json format, you can use json
property of the request class to access the data.
It's internally using the get_json
method to provide the data.
For example:
@app.post("/send-json")
def send_json(req, res):
name = req.json.name
email = req.json.email
return res.json(name=name, email=email)
property - query
This object provides you the url based parameter.
It's internally using the args
property to provide the data.
For example:
@app.get("/get-query")
def get_query(req, res):
name=req.query.name
email = req.query.email
return res.send(dict(name=name, email=email))
property - body
This object provides you the all the parameters from the Form.
It's internally using the form
property to provide the data.
For example:
@app.get("/get-form-data")
def get_form_data(req, res):
name=req.body.name
email = req.body.email
return res.send(dict(name=name, email=email))
property - header
This object provides you the all the parameters of the request header.
It's internally using the header
property to provide the data.
For example:
@app.get("/get-form-data")
def get_form_data(req, res):
return res.send(req.header)
Response class
function - send_status
This is used to set the response header status.
for example:
@app.route("/set-status")
def set_statuser(req, res):
return res.send_status(404).send("your requested page is not found.")
function - flash
To flash a message at the UI.
for example:
@app.route('/flash')
def flasher(req, res):
return res.flash("this is the flash message").end()
function - send
It sends the HTTP response.
for example:
@app.route("/send")
def sender(req, res):
return res.send("hello world")
#or
return res.send("<h1>hello world</h1>")
#or
return res.send_status(404).send("not found")
function - json
To return the json seriliazed response.
for example:
@app.route("/json")
def jsoner(req, res):
return res.json(name="aniket sarkar")
#or
return res.json({'name': 'aniket sarkar'})
#or
return res.json([1,2,3,4])
function - end
To end the current resonse process.
for example:
@app.route("/end")
def ender(req, res):
return res.end()
#or
return res.end(404) # to raise a 404 error.
function - render
Renders a html and sends the rendered HTML string to the client.
for example:
@app.route('/render')
def renderer(req, res):
context=dict(name="Aniket Sarkar", planet="Pluto")
return res.render("index.html", context)
#or
return res.render("index.html", name="Aniket Sarkar", planet="Pluto")
function - redirect
redirect to specified route.
for example:
@app.post("/login")
def login(req, res):
#if login success
return res.redirect("/dashboard")
function - get
Get the header information by the given key.
for example:
@app.route("/get")
def getter(req, res):
print (res.get("Content-Type"))
return res.end()
function - set
Set the header information.
for example:
@app.route("/header-seter")
def header_setter(req, res):
res.set('Content-Type', 'application/json')
#or
res.set({'Content-Type':'application/json'})
return res.end()
function - type
Sets the Content-Type HTTP header to the MIME type as determined by the specified type.
for example:
@app.route("/set-mime")
def mimer(req, res):
res.type('application/json')
#or
res.type(".html")
#or
res.type("json")
function - attachment
send the attachments by using this method.
The default attachment folder name is attachments
.
You can always change it by changing the config parameter.
the config parameter is ATTACHMENTS_FOLDER
.
for example:
@app.route('/attachments')
def attach(req, res):
filename = req.query.filename
return res.attachment(file_name)
function - send_file
Send the contents of a file to the client.Its internally using the send_file method from werkzeug.
function - clear_cookie
Clear a cookie. Fails silently if key doesn't exist.
function - set_cookie
Sets a cookie.
function - make_response
make a http response. It's same as Flask.wrappers.Request
Development
Beautiful Contributors
Contribution procedure.
- Create a new issue on github.
- Fork and clone this repository.
- Make some changes as required.
- Write unit test to showcase its functionality.
- Submit a pull request under
main
branch.
Run this project on your local machine.
- create a virtual environment on the project root directory.
- install all the required dependencies from requirements.txt file.
- make any changes on you local code.
- then install the module on your virtual environment using
python setup.py install
command. - The above command will install the
flask-express
module on your virtual environment. - Now create a separate project inside the example folder and start testing for your code changes.
- If you face any difficulties to perform the above steps, then plese contact me at:
aniketsarkar@yahoo.com
.
Future Roadmap
- Middleware support.
- Implementation of all the apis of ExpressJs.
- Auto Swagger documentation using
flask-restplus
andflask-pydantic
module.
License
MIT License
Copyright (c) 2021 Aniket Sarkar(aniketsarkar@yahoo.com)
Project details
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
File details
Details for the file Flask-Express-0.1.4.tar.gz
.
File metadata
- Download URL: Flask-Express-0.1.4.tar.gz
- Upload date:
- Size: 15.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.25.1 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.61.1 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f080f731d7bb1e75577eae31b99e3d907f6e82085c7a9ed32fb6be125e28a95d |
|
MD5 | 4acfa75365b1d59b1e70eb4a2b989eba |
|
BLAKE2b-256 | c8e6538d068976982dc64332bb3d4061299269a3693801fa0499e2f9609c7e72 |
File details
Details for the file Flask_Express-0.1.4-py3-none-any.whl
.
File metadata
- Download URL: Flask_Express-0.1.4-py3-none-any.whl
- Upload date:
- Size: 17.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.25.1 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.61.1 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8daeb29e005e6744795de5776db1d2accda5a0f6507131ecb3de9120383df4d6 |
|
MD5 | 2545b9c3551dd940710ecb2a6b1130ea |
|
BLAKE2b-256 | 70ec681a90793942d2d3f1e458371708b04228397fce3a057bafb432b949b2e1 |