this is an amazing program best in the world
to see this in a real world example take a look at my other projects Flask-Cms or Flask-Ide
Installable blueprints
BLUEPRINTS
models.py
or views.py
will be imported as well,basemodels.py
BaseMixin
generates __tablename__
automaticllyBaseMixin
adds an auto incrementing id
field, as the primary_key to each modelBaseMixin.session
is current model classes sessionBaseMixin.engine
is the current db engineBaseMixin.query
is the models sqlalchemy query from its sessionBaseMixin.get_all()
->
function to return all of a modelBaseMixin.get(*args,**kwargs)
->
get single model by attr values, mainly for id=xbaseviews.py
BaseView also has many builtin helpers/imports to speed development, ie:
BaseView.render() calls:
render_template(BaseView._template,**BaseView._context)
easily define either or both in the class variable
section of the class and then add or change whatever you need to
ie: maybe based on logic that happens during request processing.
for example:
class ExampleView(BaseView):
_context = {
'some_flag':True,
}
def get(self,new_flag=False):
if new_flag:
self._context['new_flag'] = new_flag
self._context['some_flag'] = False
return self.render()
- `BaseView.redirect(endpoint)`
is a reimplementation of `flask.helpers.redirect` which allows you to directly enter the
endpoint, so you dont have to run it through `url_for()` first.
- `BaseView.get_env()` -> returns the current jinja2_env
- `BaseView.form_validated()` -> returns true if all forms validate
- __namespaces imported into BaseView__:
`BaseView.flash == flask.flash`
many builtin template globals(context_processors) to use. ie:
get_block(block_id)
<-- requires use of flask.ext.xxl.apps.blog
get_icon(icon_name,icon_lib)
<-- requires use of flask.ext.xxl.apps.blog
access any icon anywhere in your templates! even from cms blocks!!!
get_model(model_name,blueprint_name)
get_button(name)
AppFactory class with many hooks into settings file (makes use of settings file similar to django)
new revamped url routing scheme, use a urls.py file in each blueprint to define the url routes for the blueprint. reference the blueprint and the url route module in the settings file to registar onto the app upon instantiation.
define routes like this:
file: urls.py
from blueprint import blueprint
from .views import ViewName,SecondView
routes = [
((blueprint_name,)
('/url',ViewName.as_View('view_name')),
('/another',SecondView.as_view('second_view')),
)
]
it basicly is like using app.add_url_rule()
method, you
just dont have to add view_func=ViewName.as_view(endpoint)
or at least the view_func=
part.
easily start a new project or extend an old one
with the flaskxxl-manage.py command line helper tool
to start a project from scratch
$ flaskxxl-manage.py start-project
to add to an existing project
$ flaskxxl-manage.py start-blueprint
for more fun checkout the wiki