Flask: Difference between revisions
No edit summary |
No edit summary |
||
Line 32: | Line 32: | ||
</pre> | </pre> | ||
== | == Paths == | ||
You can use any route you like | |||
<pre> | |||
@app.route("/any/route/you/like") | |||
</pre> | |||
You can also use variable routes | |||
<pre> | |||
@app.route("/book/<int:id>") | |||
def book(id): | |||
</pre> | |||
as you can see you can grab the variable in the url through the function’s parameter | |||
== Http Methods == | |||
Methods like GET or POST (DELETE, PUT…) can be handled by flask | Methods like GET or POST (DELETE, PUT…) can be handled by flask | ||
Line 53: | Line 66: | ||
with request.method you can determine the incoming kind of request. | with request.method you can determine the incoming kind of request. | ||
== Templates== | |||
To be able return full html pages, flask uses templates using Jinja to insert variable content. | |||
<pre> | |||
@app.route('/') | |||
def home(): | |||
message = "Welcome Home!" | |||
return render_template('home.html', message=message) | |||
</pre> | |||
you can pass as many variables to the template as you want. in this example we pass message to the template: | |||
The html looks something like: | |||
<pre> | |||
<html> | |||
<p>{{message}}</p> | |||
<html> | |||
</pre> | |||
'''!important:''' The html file needs to be saved inside a templates folder called "templates" inside your project folder- | |||
== Helpful function == | |||
404 Page not found | |||
<pre> | |||
@app.errorhandler(404) | |||
def page_not_found(error): | |||
"""Custom 404 page.""" | |||
return render_template('404.html'), 404 | |||
</pre> |
Revision as of 18:30, 9 June 2018
Flask
Short introduction guide on Flask. http://flask.pocoo.org/ (Used for XPPL, so to see a more advanced use in connection with database, see XPPL)
Basic Flask
Flask is a microframework for python to create web applications. It basically connects the webserver with your python code.
Install
$ pip install Flask
Simple text serving
from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!"
- with @app.route you can define the url flask respons to.
- the function definition after is mandetory as well as the return.
- everything that comes after return gets sent back to the browser (http GET request)
Run it with:
$ FLASK_APP=hello.py flask run
Paths
You can use any route you like
@app.route("/any/route/you/like")
You can also use variable routes
@app.route("/book/<int:id>") def book(id):
as you can see you can grab the variable in the url through the function’s parameter
Http Methods
Methods like GET or POST (DELETE, PUT…) can be handled by flask
Therefore you need to add the wanted methods to the route definition like:
from flask import Flask app = Flask(__name__) @app.route('/address_to_post', methods= ['POST','GET']) def respond_to_post(): answer = "" if request.method == 'GET': answer = "get" if request.method == 'POST': answer = "get" return answer
with request.method you can determine the incoming kind of request.
Templates
To be able return full html pages, flask uses templates using Jinja to insert variable content.
@app.route('/') def home(): message = "Welcome Home!" return render_template('home.html', message=message)
you can pass as many variables to the template as you want. in this example we pass message to the template:
The html looks something like:
<html> <p>{{message}}</p> <html>
!important: The html file needs to be saved inside a templates folder called "templates" inside your project folder-
Helpful function
404 Page not found
@app.errorhandler(404) def page_not_found(error): """Custom 404 page.""" return render_template('404.html'), 404