forked from orbit-oss/flask
Some more documentation updates.
This commit is contained in:
parent
1404a85bc5
commit
715f64d2af
2 changed files with 32 additions and 12 deletions
|
|
@ -88,7 +88,7 @@ Now let's create a server side function that accepts two URL arguments of
|
||||||
numbers which should be added together and then sent back to the
|
numbers which should be added together and then sent back to the
|
||||||
application in a JSON object. This is a really ridiculous example and is
|
application in a JSON object. This is a really ridiculous example and is
|
||||||
something you usually would do on the client side alone, but a simple
|
something you usually would do on the client side alone, but a simple
|
||||||
example that shows how you would use jQuer and Flask nonetheless::
|
example that shows how you would use jQuery and Flask nonetheless::
|
||||||
|
|
||||||
from flask import Flask, jsonify, render_template, request
|
from flask import Flask, jsonify, render_template, request
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
@ -108,6 +108,13 @@ template. This template will load jQuery as above and have a little form
|
||||||
we can add two numbers and a link to trigger the function on the server
|
we can add two numbers and a link to trigger the function on the server
|
||||||
side.
|
side.
|
||||||
|
|
||||||
|
Note that we are using the :meth:`~werkzeug.MultiDict.get` method here
|
||||||
|
which will never fail. If the key is missing a default value (here ``0``)
|
||||||
|
is returned. Furthermore it can convert values to a specific type (like
|
||||||
|
in our case `int`). This is especially handy for code that that is
|
||||||
|
triggered by a script (APIs, JavaScript etc.) because you don't need
|
||||||
|
special error reporting in that case.
|
||||||
|
|
||||||
The HTML
|
The HTML
|
||||||
--------
|
--------
|
||||||
|
|
||||||
|
|
|
||||||
33
flask.py
33
flask.py
|
|
@ -66,8 +66,8 @@ class Request(RequestBase):
|
||||||
"""If the mimetype is `application/json` this will contain the
|
"""If the mimetype is `application/json` this will contain the
|
||||||
parsed JSON data.
|
parsed JSON data.
|
||||||
"""
|
"""
|
||||||
if not json_available:
|
if __debug__:
|
||||||
raise AttributeError('simplejson not available')
|
_assert_have_json()
|
||||||
if self.mimetype == 'application/json':
|
if self.mimetype == 'application/json':
|
||||||
return json.loads(self.data)
|
return json.loads(self.data)
|
||||||
|
|
||||||
|
|
@ -210,6 +210,8 @@ def jsonify(*args, **kwargs):
|
||||||
|
|
||||||
.. versionadded:: 0.2
|
.. versionadded:: 0.2
|
||||||
"""
|
"""
|
||||||
|
if __debug__:
|
||||||
|
_assert_have_json()
|
||||||
return current_app.response_class(json.dumps(dict(*args, **kwargs),
|
return current_app.response_class(json.dumps(dict(*args, **kwargs),
|
||||||
indent=None if request.is_xhr else 2), mimetype='application/json')
|
indent=None if request.is_xhr else 2), mimetype='application/json')
|
||||||
|
|
||||||
|
|
@ -251,6 +253,12 @@ def _default_template_ctx_processor():
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _assert_have_json():
|
||||||
|
"""Helper function that fails if JSON is unavailable"""
|
||||||
|
if not json_available:
|
||||||
|
raise RuntimeError('simplejson not installed')
|
||||||
|
|
||||||
|
|
||||||
def _get_package_path(name):
|
def _get_package_path(name):
|
||||||
"""Returns the path to a package or cwd if that cannot be found."""
|
"""Returns the path to a package or cwd if that cannot be found."""
|
||||||
try:
|
try:
|
||||||
|
|
@ -261,6 +269,8 @@ def _get_package_path(name):
|
||||||
|
|
||||||
def _tojson_filter(string, *args, **kwargs):
|
def _tojson_filter(string, *args, **kwargs):
|
||||||
"""Calls dumps for the template engine, escaping Slashes properly."""
|
"""Calls dumps for the template engine, escaping Slashes properly."""
|
||||||
|
if __debug__:
|
||||||
|
_assert_have_json()
|
||||||
return json.dumps(string, *args, **kwargs).replace('</', '<\\/')
|
return json.dumps(string, *args, **kwargs).replace('</', '<\\/')
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -398,8 +408,7 @@ class Flask(object):
|
||||||
url_for=url_for,
|
url_for=url_for,
|
||||||
get_flashed_messages=get_flashed_messages
|
get_flashed_messages=get_flashed_messages
|
||||||
)
|
)
|
||||||
if json_available:
|
self.jinja_env.filters['tojson'] = _tojson_filter
|
||||||
self.jinja_env.filters['tojson'] = _tojson_filter
|
|
||||||
|
|
||||||
def create_jinja_loader(self):
|
def create_jinja_loader(self):
|
||||||
"""Creates the Jinja loader. By default just a package loader for
|
"""Creates the Jinja loader. By default just a package loader for
|
||||||
|
|
@ -498,7 +507,8 @@ class Flask(object):
|
||||||
|
|
||||||
def add_url_rule(self, rule, endpoint, view_func=None, **options):
|
def add_url_rule(self, rule, endpoint, view_func=None, **options):
|
||||||
"""Connects a URL rule. Works exactly like the :meth:`route`
|
"""Connects a URL rule. Works exactly like the :meth:`route`
|
||||||
decorator. If a view_func is provided it will be registered with the endpoint.
|
decorator. If a view_func is provided it will be registered with the
|
||||||
|
endpoint.
|
||||||
|
|
||||||
Basically this example::
|
Basically this example::
|
||||||
|
|
||||||
|
|
@ -512,19 +522,22 @@ class Flask(object):
|
||||||
pass
|
pass
|
||||||
app.add_url_rule('/', 'index', index)
|
app.add_url_rule('/', 'index', index)
|
||||||
|
|
||||||
If the view_func is not provided you will need to connect the endpoint to a
|
If the view_func is not provided you will need to connect the endpoint
|
||||||
view function like so:
|
to a view function like so::
|
||||||
|
|
||||||
app.view_functions['index'] = index
|
app.view_functions['index'] = index
|
||||||
|
|
||||||
|
.. versionchanged:: 0.2
|
||||||
|
`view_func` parameter added
|
||||||
|
|
||||||
:param rule: the URL rule as string
|
:param rule: the URL rule as string
|
||||||
:param endpoint: the endpoint for the registered URL rule. Flask
|
:param endpoint: the endpoint for the registered URL rule. Flask
|
||||||
itself assumes the name of the view function as
|
itself assumes the name of the view function as
|
||||||
endpoint
|
endpoint
|
||||||
:param view_func: the function to call when servicing a request to the provided endpoint
|
:param view_func: the function to call when servicing a request to the
|
||||||
|
provided endpoint
|
||||||
:param options: the options to be forwarded to the underlying
|
:param options: the options to be forwarded to the underlying
|
||||||
:class:`~werkzeug.routing.Rule` object
|
:class:`~werkzeug.routing.Rule` object
|
||||||
|
|
||||||
.. versionadded:: 0.2
|
|
||||||
"""
|
"""
|
||||||
options['endpoint'] = endpoint
|
options['endpoint'] = endpoint
|
||||||
options.setdefault('methods', ('GET',))
|
options.setdefault('methods', ('GET',))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue