turn standard Flask into mvc
Project description
You can use the mvc pattern in your flask application using this extension.
Installation
Run the follow command to install mvc_flask
:
$ pip install mvc_flask
Configuration
To configure the mvc_flask
you need import and register in your application, e.g:
from flask import Flask
from mvc_flask import FlaskMVC
app = Flask(__name__)
FlaskMVC(app)
Or use application factories
, e.g:
mvc = FlaskMVC()
def create_app():
...
mvc.init_app(app)
By default the mvc_flask
assumes that your application directory will be app
and if it doesn't exist, create it!
You structure should be look like this:
app
├── __ini__.py
├── controllers
│ └── home_controller.py
├── routes.py
└── views
├── index.html
Router
You can create routes in app/routes.py
and after create file, you can start register routes, e.g:
from mvc_flask import Router
Router.get("/", "home#index")
The same must be make done to POST
, PUT
and DELETE
methods. E.g: Router.post("/messages", "messages#create")
The first param represent the relative path and second represent the controller#action
. Remember that we are working with MVC pattern
, so we have controller
and action
.
The controller
can be created in app/controllers
and action is method of controller
.
You can use Router.all()
to register all routes of CRUD
.
Router.all("users")
The previous command produce this:
users.create POST /users
users.delete DELETE /users/<id>
users.edit GET /users/<id>/edit
users.index GET /users
users.new GET /users/new
users.show GET /users/<id>
users.update PUT /users/<id>
You can also use only parameter
to controll routes, e.g:
Router.all("messages", only="index show new create")
The previous command produce this:
messages.create POST /messages
messages.index GET /messages
messages.new GET /messages/new
messages.show GET /messages/<id>
The paramenter only
accept string
or array
, so, you can use only=["index", "show", "new", "create"]
Controller
Now that configure routes, the home_controller.py
file must contain the HomeController
class, registering the action
, e.g:
from flask import render_template
class HomeController:
def index(self):
return render_template("index.html")
If you have question, please, check de app directory to more details.
Views
Flask use the templates
directory by default to store HTMLs
files. However, using the mvc-flask
the default becomes views
. You can use the app/views
directory to stores templates.
Tests
You can run the tests, executing the follow command:
$ make test
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 mvc_flask-2.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f498d90ea06efe235f1509a96f327f04e485cc93a2c989b2f53145c2ee6240e9 |
|
MD5 | 73538cbf5f0eee02df679085924f435b |
|
BLAKE2b-256 | a6181f63816396106a966987f296dea5a2ed89997b95edacdf024225eeb7697e |