mirror of https://github.com/pallets/flask.git
Added required_methods
This commit is contained in:
parent
2053d04db0
commit
dbfd406a21
2
CHANGES
2
CHANGES
|
@ -68,6 +68,8 @@ Relase date to be decided, codename to be chosen.
|
|||
longer arguments to the response object, they now have a defined meaning.
|
||||
- Added :attr:`flask.Flask.request_globals_class` to allow a specific class to
|
||||
be used on creation of the :data:`~flask.g` instance of each request.
|
||||
- Added `required_methods` attribute to view functions to force-add methods
|
||||
on registration.
|
||||
|
||||
Version 0.8.1
|
||||
-------------
|
||||
|
|
|
@ -636,6 +636,10 @@ some defaults to :meth:`~flask.Flask.add_url_rule` or general behavior:
|
|||
decorators that want to customize the `OPTIONS` response on a per-view
|
||||
basis.
|
||||
|
||||
- `required_methods`: if this attribute is set, Flask will always add
|
||||
these methods when registering a URL rule even if the methods were
|
||||
explicitly overriden in the ``route()`` call.
|
||||
|
||||
Full example::
|
||||
|
||||
def index():
|
||||
|
|
|
@ -915,6 +915,10 @@ class Flask(_PackageBoundObject):
|
|||
# a tuple of only `GET` as default.
|
||||
if methods is None:
|
||||
methods = getattr(view_func, 'methods', None) or ('GET',)
|
||||
methods = set(methods)
|
||||
|
||||
# Methods that should always be added
|
||||
required_methods = set(getattr(view_func, 'required_methods', ()))
|
||||
|
||||
# starting with Flask 0.8 the view_func object can disable and
|
||||
# force-enable the automatic options handling.
|
||||
|
@ -923,11 +927,14 @@ class Flask(_PackageBoundObject):
|
|||
|
||||
if provide_automatic_options is None:
|
||||
if 'OPTIONS' not in methods:
|
||||
methods = tuple(methods) + ('OPTIONS',)
|
||||
provide_automatic_options = True
|
||||
required_methods.add('OPTIONS')
|
||||
else:
|
||||
provide_automatic_options = False
|
||||
|
||||
# Add the required methods now.
|
||||
methods |= required_methods
|
||||
|
||||
# due to a werkzeug bug we need to make sure that the defaults are
|
||||
# None if they are an empty dictionary. This should not be necessary
|
||||
# with Werkzeug 0.7
|
||||
|
|
Loading…
Reference in New Issue