examples for flask workshop
This commit is contained in:
commit
a0ecab2b0f
12
00-hello-world.py
Normal file
12
00-hello-world.py
Normal file
|
@ -0,0 +1,12 @@
|
|||
from flask import Flask
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
|
||||
@app.route('/')
|
||||
def hello_world():
|
||||
return 'Hello World!'
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run()
|
11
01-hello-world-templates.py
Normal file
11
01-hello-world-templates.py
Normal file
|
@ -0,0 +1,11 @@
|
|||
from flask import Flask, render_template
|
||||
app = Flask(__name__)
|
||||
|
||||
@app.route('/')
|
||||
@app.route('/index')
|
||||
def index():
|
||||
user = {'username': 'Simon'}
|
||||
return render_template('index.html', title='Home', user=user)
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run()
|
10
02-template-even.py
Normal file
10
02-template-even.py
Normal file
|
@ -0,0 +1,10 @@
|
|||
from flask import Flask, render_template
|
||||
app = Flask(__name__)
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
numbers = range(1,25)
|
||||
return render_template('evens.html', title='Evens', numbers=numbers)
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run()
|
12
03-template-primes.py
Normal file
12
03-template-primes.py
Normal file
|
@ -0,0 +1,12 @@
|
|||
from sympy import isprime
|
||||
from flask import Flask, render_template
|
||||
app = Flask(__name__)
|
||||
|
||||
@app.route('/')
|
||||
@app.route('/index')
|
||||
def index():
|
||||
numbers = range(1,25)
|
||||
return render_template('colorful-primes.html', title='Primes', numbers=numbers, isprime=isprime)
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run()
|
9
04-template-inheritance.py
Normal file
9
04-template-inheritance.py
Normal file
|
@ -0,0 +1,9 @@
|
|||
from flask import Flask, render_template
|
||||
app = Flask(__name__)
|
||||
|
||||
@app.route('/')
|
||||
def page1():
|
||||
return render_template('page1.html')
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run()
|
12
05-input-primes.py
Normal file
12
05-input-primes.py
Normal file
|
@ -0,0 +1,12 @@
|
|||
from sympy import isprime
|
||||
from flask import Flask, render_template
|
||||
app = Flask(__name__)
|
||||
|
||||
@app.route('/primes')
|
||||
@app.route('/primes/<max_number>')
|
||||
def primes(max_number=10):
|
||||
numbers = range(1,int(max_number)+1)
|
||||
return render_template('colorful-primes.html', title='Primes', numbers=numbers, isprime=isprime)
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run()
|
12
06-input-factorial.py
Normal file
12
06-input-factorial.py
Normal file
|
@ -0,0 +1,12 @@
|
|||
from flask import Flask, render_template
|
||||
from functools import reduce
|
||||
from operator import mul
|
||||
app = Flask(__name__)
|
||||
|
||||
@app.route('/factorial/<int:number>')
|
||||
def index(number):
|
||||
factorial = reduce(mul, range(1,number+1))
|
||||
return render_template('factorial.html', number=number, factorial=factorial)
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run()
|
10
07-input-url.py
Normal file
10
07-input-url.py
Normal file
|
@ -0,0 +1,10 @@
|
|||
from flask import Flask, render_template
|
||||
app = Flask(__name__)
|
||||
|
||||
@app.route('/starter')
|
||||
@app.route('/starter/<choice>')
|
||||
def starter(choice=None):
|
||||
return render_template('starter.html', choice=choice)
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run()
|
19
08-request-handling.py
Normal file
19
08-request-handling.py
Normal file
|
@ -0,0 +1,19 @@
|
|||
from flask import Flask, render_template, request, redirect, url_for
|
||||
app = Flask(__name__)
|
||||
|
||||
counter = 0
|
||||
|
||||
@app.route('/', methods=('GET', 'POST'))
|
||||
def index():
|
||||
global counter
|
||||
if request.method == 'GET':
|
||||
return render_template('request-handling.html', counter=counter)
|
||||
else:
|
||||
if request.form.get('btn') == 'down':
|
||||
counter -= 1
|
||||
elif request.form.get('btn') == 'up':
|
||||
counter += 1
|
||||
return redirect(url_for('index'))
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run()
|
16
09-sessions.py
Normal file
16
09-sessions.py
Normal file
|
@ -0,0 +1,16 @@
|
|||
from flask import Flask, render_template, request, make_response
|
||||
app = Flask(__name__)
|
||||
|
||||
@app.route('/', methods=['POST', 'GET'])
|
||||
def index():
|
||||
if request.method == 'GET':
|
||||
name = request.cookies.get('name')
|
||||
return render_template('cookies.html', name=name)
|
||||
else:
|
||||
name = request.form['name']
|
||||
resp = make_response(render_template('cookies.html', name=name))
|
||||
resp.set_cookie('name', name)
|
||||
return resp
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run()
|
19
10-debugger.py
Normal file
19
10-debugger.py
Normal file
|
@ -0,0 +1,19 @@
|
|||
from flask import Flask, render_template
|
||||
from flask_debugtoolbar import DebugToolbarExtension
|
||||
|
||||
import random
|
||||
app = Flask(__name__)
|
||||
app.config['SECRET_KEY'] = '<replace with a secret key>'
|
||||
app.debug = True
|
||||
toolbar = DebugToolbarExtension(app)
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
coin = random.random()
|
||||
if coin >= 0.5:
|
||||
return render_template('index.html')
|
||||
else:
|
||||
raise Exception("Bad luck")
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(debug=True)
|
30
decorator-example.py
Normal file
30
decorator-example.py
Normal file
|
@ -0,0 +1,30 @@
|
|||
from random import random as rnd
|
||||
|
||||
def add_lametta(func):
|
||||
def wrapper(*args, **kwargs):
|
||||
return func(*args, **kwargs).replace('+++', '+/+')
|
||||
return wrapper
|
||||
|
||||
def add_bulbs(func):
|
||||
def wrapper(*args, **kwargs):
|
||||
return "".join([x if x in ' \n' or rnd() < 0.9 else 'o' for x in func(*args, **kwargs)])
|
||||
return wrapper
|
||||
|
||||
def add_stars(func):
|
||||
def wrapper(*args, **kwargs):
|
||||
return "".join([x if x in ' \n' or rnd() < 0.9 else '*' for x in func(*args, **kwargs)])
|
||||
return wrapper
|
||||
|
||||
@add_lametta
|
||||
@add_bulbs
|
||||
def generate_christmas_tree(height):
|
||||
return "\n".join(["".join(['+' if abs(j - (height)/2) < i/2 else ' '
|
||||
for j in range(height)]) for i in range(height)])
|
||||
|
||||
def generate_xmas(height):
|
||||
return "\n".join([' ' * (height - i) + '+' * 2 * i + ' ' * (height - i) for i in range(height)])
|
||||
|
||||
print("christmas tree:")
|
||||
print(generate_christmas_tree(14))
|
||||
|
||||
print(generate_xmas(10))
|
3
static/css/style.css
Normal file
3
static/css/style.css
Normal file
|
@ -0,0 +1,3 @@
|
|||
body {
|
||||
background-color: #f1f1f1;
|
||||
}
|
14
templates/colorful-primes.html
Normal file
14
templates/colorful-primes.html
Normal file
|
@ -0,0 +1,14 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>{{ title }}</title>
|
||||
</head>
|
||||
<body>
|
||||
{% for number in numbers %}
|
||||
{% if isprime(number) %}
|
||||
<b style="color:blue">{{ number }}</b>
|
||||
{% else %}
|
||||
{{ number }}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</body>
|
||||
</html>
|
13
templates/cookies.html
Normal file
13
templates/cookies.html
Normal file
|
@ -0,0 +1,13 @@
|
|||
<html>
|
||||
<body>
|
||||
{% if name is none %}
|
||||
<form method = "POST">
|
||||
<p><h3>Enter your name:</h3></p>
|
||||
<p><input type = 'text' name = 'name'/></p>
|
||||
<p><input type = 'submit' value = 'Send'/></p>
|
||||
</form>
|
||||
{% else %}
|
||||
<p><h3>Hello {{ name }}! I will remember you..</h3></p>
|
||||
{% endif %}
|
||||
</body>
|
||||
</html>
|
14
templates/evens.html
Normal file
14
templates/evens.html
Normal file
|
@ -0,0 +1,14 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>{{ title }}</title>
|
||||
</head>
|
||||
<body>
|
||||
{% for number in numbers %}
|
||||
{% if number % 2 == 0 %}
|
||||
<b style="color:limegreen">{{ number }}</b>
|
||||
{% else %}
|
||||
{{ number }}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</body>
|
||||
</html>
|
8
templates/factorial.html
Normal file
8
templates/factorial.html
Normal file
|
@ -0,0 +1,8 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Factorial</title>
|
||||
</head>
|
||||
<body>
|
||||
The factorial of {{ number }} = {{ factorial }}
|
||||
</body>
|
||||
</html>
|
8
templates/index.html
Normal file
8
templates/index.html
Normal file
|
@ -0,0 +1,8 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>{{ title }}</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Hello, {{ user.username }}!</h1>
|
||||
</body>
|
||||
</html>
|
17
templates/layout.html
Normal file
17
templates/layout.html
Normal file
|
@ -0,0 +1,17 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
{% block head %}
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
||||
<title>{% block title %}{% endblock %} - My Webpage</title>
|
||||
{% endblock %}
|
||||
</head>
|
||||
<body>
|
||||
<div id="content">{% block content %}{% endblock %}</div>
|
||||
<div id="footer">
|
||||
{% block footer %}
|
||||
© Copyright 2010 by <a href="http://domain.invalid/">you</a>.
|
||||
{% endblock %}
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
13
templates/page1.html
Normal file
13
templates/page1.html
Normal file
|
@ -0,0 +1,13 @@
|
|||
{% extends "layout.html" %}
|
||||
{% block title %}Index{% endblock %}
|
||||
{% block head %}
|
||||
{{ super() }}
|
||||
<style type="text/css">
|
||||
.important { color: #336699; }
|
||||
</style>
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<h1>Index</h1>
|
||||
<p class="important">
|
||||
Welcome on my awesome homepage.
|
||||
{% endblock %}
|
12
templates/request-handling.html
Normal file
12
templates/request-handling.html
Normal file
|
@ -0,0 +1,12 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Counter</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Counter = {{ counter }}</h1>
|
||||
</body>
|
||||
<form method="post">
|
||||
<input type="submit" name="btn" value="up">
|
||||
<input type="submit" name="btn" value="down">
|
||||
</form>
|
||||
</html>
|
15
templates/starter.html
Normal file
15
templates/starter.html
Normal file
|
@ -0,0 +1,15 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Choose your starter:</title>
|
||||
</head>
|
||||
<body>
|
||||
{% if choice == None %}
|
||||
Choose your starter:
|
||||
<p><a href="{{ url_for('starter', choice='Bulbasaur') }}">Bulbasaur</a></p>
|
||||
<p><a href="{{ url_for('starter', choice='Charmander') }}">Charmander</a></p>
|
||||
<p><a href="{{ url_for('starter', choice='Squirtle') }}">Squirtle</a></p>
|
||||
{% else %}
|
||||
You chose {{ choice }}!
|
||||
{% endif %}
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user