https://github.com/kshivendu/dj-flask
A Proof-of-concept python library that allows you to write middlewares that are compatible with Django as well as Flask
https://github.com/kshivendu/dj-flask
django flask python
Last synced: about 2 months ago
JSON representation
A Proof-of-concept python library that allows you to write middlewares that are compatible with Django as well as Flask
- Host: GitHub
- URL: https://github.com/kshivendu/dj-flask
- Owner: KShivendu
- Created: 2022-01-25T16:59:20.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2022-03-07T08:02:43.000Z (over 4 years ago)
- Last Synced: 2025-04-03T09:21:45.620Z (about 1 year ago)
- Topics: django, flask, python
- Language: Python
- Homepage:
- Size: 18.6 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Dj-Flask
A simple library that allows you to write middlewares that run in Django and well as Flask.
## Setup
- Run `cd library && python setup.py bdist_wheel` to generate files required for installation
- Run `pip install -r requirements.txt` to install the library
## Running the examples
- For Django: `cd dj_sample && python manage.py runserver`
- For Flask: `cd flask_sample && python server.py`
## Example
```python
# middleware.py
from dj_flask.middleware import (
BaseMiddleWare,
CustomRequest,
CustomNext,
CustomResponse,
)
class CommonMiddlware(BaseMiddleWare):
def intercept(self, request: CustomRequest, next: CustomNext) -> CustomResponse:
if not (request.path == "/even-or-odd" and request.method == "GET"):
return next
try:
num = int(request.query["num"])
except:
return CustomResponse("Bad request", status=400)
else:
json_str = dumps({"isEven": True if num % 2 == 0 else False})
return CustomResponse(
json_str,
mimetype="application/json",
status=200,
)
```
### For Django:
```python
# examples/django/app/settings.py
MIDDLEWARE = [
'task.middleware.CommonMiddleware',
'...'
]
```
### For Flask:
```python
# examples/flask/server.py
from middleware import CommonMiddlware
from flask import Flask
app = Flask('DemoApp')
app.wsgi_app = CommonMiddlware(app.wsgi_app)
```
### Endpoints
1. http://localhost:8000/even-or-odd?num=22
- The middleware returns `{"isEven": true}` because num is even
2. http://localhost:8000/even-or-odd?num=23
- The middleware returns `{"isEven": true}` because num is odd
2. http://localhost:8000/even-or-odd?num=foo
- The middleware returns Bad request (400) because num is not an integer.
3. http://localhost:8000/even-or-odd
- The middleware returns Bad request (400) because num is missing.
4. http://localhost:8000/hello (Middleware passes it to the controller.)
- The controller returns "Hello world" because the middleware passed the request.