Rewrite subclassing example with a better use-case.

This commit is contained in:
Anton Sarukhanov 2016-06-02 15:05:14 -07:00
parent 63b5dab0fc
commit 447f591d2b

View file

@ -3,20 +3,15 @@ Subclassing Flask
The :class:`~flask.Flask` class is designed for subclassing. The :class:`~flask.Flask` class is designed for subclassing.
One reason to subclass would be customizing the Jinja2 :class:`~jinja2.Environment`. For example, to add a new global template variable:: For example, you may want to override how request parameters are handled to preserve their order::
from flask import Flask
from datetime import datetime
from flask import Flask, Request
from werkzeug.datastructures import ImmutableOrderedMultiDict
class MyRequest(Request):
"""Request subclass to override request parameter storage"""
parameter_storage_class = ImmutableOrderedMultiDict
class MyFlask(Flask): class MyFlask(Flask):
""" Flask with more global template vars """ """Flask subclass using the custom request class"""
request_class = MyRequest
def create_jinja_environment(self):
""" Initialize my custom Jinja environment. """
jinja_env = super(MyFlask, self).create_jinja_environment(self)
jinja_env.globals.update(
current_time = datetime.datetime.now()
)
return jinja_env
This is the recommended approach for overriding or augmenting Flask's internal functionality. This is the recommended approach for overriding or augmenting Flask's internal functionality.