Difference between revisions of "Parts of a Flask Web App"

From TRCCompSci - AQA Computer Science
Jump to: navigation, search
(url_for)
(Handling HTML Forms)
Line 63: Line 63:
  
 
=Handling HTML Forms=
 
=Handling HTML Forms=
 +
The code below is an example of using html form elements
 +
<syntaxhighlight lang=python>
 +
@app.route('/login', methods=['GET', 'POST'])
 +
def login():
 +
    if request.method == 'POST':
 +
        if (request.form['username']=="wayne") and request.form['password']=="pass":
 +
                return redirect(url_for('home'))
 +
    return '''
 +
        <form method="post"><p>
 +
        Username: <input type=text name=username><p>
 +
        Password: <input type=password name=password><p>
 +
        <input type=submit value=Login>
 +
        </form>
 +
        '''
 +
</syntaxhighlight>
  
 
=Using Sessions=
 
=Using Sessions=
  
 
=Templates=
 
=Templates=

Revision as of 15:00, 10 April 2019

@app.route

This defines where a particular path in the url relates too:

@app.route("/")
def hello():
    return "Hello World!"

When the app server is running, visiting the root will produce the message 'Hello World!'. The code below will also display this if you visit '/home' on the app server:

@app.route("/")
@app.route("/home")
def hello():
    return "Hello World!"

Parameters

The example below will just display the message:

@app.route("/")
def hello():
    return "Hello World!"

You can also use parameters:

@app.route("/<name>")
def hello(name):
    return "Hello "+name

Using this method the parameters are passed as strings, and you may need to convert them. In this example the URL '/Wayne' will display the message 'Hello Wayne'.

url_for

If you look at this example:

@app.route("/home")
def home():
    return "test"
 
@app.route("/hello")
def hello():
    return "Hello World!"

it creates 2 paths, one for '/hello' (runs 'def hello()') and one for '/home' (runs 'def home()'). url_for will accept the name of the method (ie def ....) and return the route.

so:

url_for('hello')

will return:

/hello

Handling HTML Forms

The code below is an example of using html form elements

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        if (request.form['username']=="wayne") and request.form['password']=="pass":
                return redirect(url_for('home'))
    return '''
        <form method="post"><p>
        Username: <input type=text name=username><p>
        Password: <input type=password name=password><p>
        <input type=submit value=Login>
        </form>
        '''

Using Sessions

Templates