Skip to content

Instantly share code, notes, and snippets.

@jmhobbs
Last active December 25, 2015 07:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jmhobbs/6942394 to your computer and use it in GitHub Desktop.
Save jmhobbs/6942394 to your computer and use it in GitHub Desktop.
Issue with Flask 0.10.1 documentation as written.
# -*- coding: utf-8 -*-
import sys
from flask import Flask, url_for
app = Flask(__name__)
@app.route("/")
def index():
return url_for('take_me_to_flask', ignore_me="okay"),
def lookup_url(endpoint, **values):
'''Mock method for docs example to load.'''
if endpoint == 'take_me_to_flask':
return 'http://flask.pocoo.org/'
else:
return None
def external_url_handler(error, endpoint, values):
print values
url = lookup_url(endpoint, **values)
if url is None:
# External lookup did not have a URL.
# Re-raise the BuildError, in context of original traceback.
exc_type, exc_value, tb = sys.exc_info()
if exc_value is error:
raise exc_type, exc_value, tb
else:
raise error
# url_for will use this result, instead of raising BuildError.
return url
app.url_build_error_handlers.append(external_url_handler)
if __name__ == '__main__':
app.run(debug=True)
# -*- coding: utf-8 -*-
import sys
from flask import Flask, url_for
app = Flask(__name__)
@app.route('/')
def index():
return url_for('take_me_to_flask', ignore_me="okay")
def lookup_url(endpoint, **values):
'''Mock method for docs example to load.'''
if endpoint == 'take_me_to_flask':
return 'http://flask.pocoo.org/'
else:
return None
##################################
## Start code copied from API docs
def external_url_handler(error, endpoint, **values):
"Looks up an external URL when `url_for` cannot build a URL."
# This is an example of hooking the build_error_handler.
# Here, lookup_url is some utility function you've built
# which looks up the endpoint in some external URL registry.
url = lookup_url(endpoint, **values)
if url is None:
# External lookup did not have a URL.
# Re-raise the BuildError, in context of original traceback.
exc_type, exc_value, tb = sys.exc_info()
if exc_value is error:
raise exc_type, exc_value, tb
else:
raise error
# url_for will use this result, instead of raising BuildError.
return url
app.build_error_handler = external_url_handler
##################################
## End code copied from API docs
if __name__ == '__main__':
app.run(debug=True)
127.0.0.1 - - [11/Oct/2013 16:23:38] "GET / HTTP/1.1" 500 -
Traceback (most recent call last):
File "/home/jmhobbs/Desktop/example/venv/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/home/jmhobbs/Desktop/example/venv/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/home/jmhobbs/Desktop/example/venv/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/home/jmhobbs/Desktop/example/venv/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/home/jmhobbs/Desktop/example/venv/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/jmhobbs/Desktop/example/venv/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/jmhobbs/Desktop/example/venv/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/home/jmhobbs/Desktop/example/venv/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/jmhobbs/Desktop/example/per_documentation.py", line 12, in index
return url_for('take_me_to_flask', ignore_me="okay")
File "/home/jmhobbs/Desktop/example/venv/lib/python2.7/site-packages/flask/helpers.py", line 312, in url_for
return appctx.app.handle_url_build_error(error, endpoint, values)
File "/home/jmhobbs/Desktop/example/venv/lib/python2.7/site-packages/flask/app.py", line 1641, in handle_url_build_error
reraise(exc_type, exc_value, tb)
File "/home/jmhobbs/Desktop/example/venv/lib/python2.7/site-packages/flask/helpers.py", line 305, in url_for
force_external=external)
File "/home/jmhobbs/Desktop/example/venv/lib/python2.7/site-packages/werkzeug/routing.py", line 1620, in build
raise BuildError(endpoint, values, method)
BuildError: ('take_me_to_flask', {'ignore_me': 'okay'}, None)
Flask==0.10.1
Jinja2==2.7.1
MarkupSafe==0.18
Werkzeug==0.9.4
argparse==1.2.1
distribute==0.6.24
itsdangerous==0.23
wsgiref==0.1.2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment