#!/wwwhome/home/tjlahton/public_html/cgi-bin/ties4080/jinja/venv/bin/python
# -*- coding: utf-8 -*-
from flask import Flask, request, Response, render_template, jsonify, url_for, redirect, make_response
from jinja2 import Template, Environment, FileSystemLoader
import os
import urllib.parse
import json
app = Flask(__name__)
@app.errorhandler(404)
def page_not_found(error):
return render_template('404.html'), 404
@app.route('/numero/')
@app.route('/numero/')
def numero(nro=0):
return str(nro)
@app.route('/merkkijono/')
def merkkijono(mjono="foo"):
return mjono
@app.route('/polku/')
@app.route('/polku/')
def polku(p="."):
return p
@app.route('/kaikki//')
def kaikki(mjono="foo", nro=0):
return mjono + " " + str(nro)
#jos palauttaa dictin, muunnetaan se automaattisesti jsoniksi
@app.route('/json_dict')
def json2():
d = { "foo": "bar", "foobar": 3}
return d
#jos palauttaa listan, sen voi jsonify-funktiolla muuntaa jsoniksi
@app.route('/json_list')
def json_list():
data = [1,2,3,4]
d = { "foo": "bar", "foobar": 3}
data.append(d)
# return data
return jsonify(data)
#jos käytetään json-kirjasto, täytyy response luoda itse
@app.route('/json_list_v2')
def json_list_v2():
data = [1,2,3,4]
d = { "foo": "bar", "foobar": 3}
data.append(d)
resp = make_response(json.dumps(data), 200)
# Määritetään merkistö
resp.charset = "UTF-8"
# Määritetään mimetyyppi
resp.mimetype = "application/json"
return resp
@app.route('/kirjaudu/')
def kirjaudu(nimi=""):
if nimi == "Tommi":
#ei edelleenohjausta
# return tervetuloa(nimi)
#edelleenohjaus 302
# return redirect("https://www.jyu.fi/")
return redirect(url_for('tervetuloa', nimi=nimi))
else:
# return failed(nimi)
return redirect(url_for('failed', nimi=nimi))
return "Tänne ei pitäisi koskaan päätyä"
@app.route('/tervetuloa/')
def tervetuloa(nimi=""):
return "Tervetuloa " + nimi
@app.route('/failed/')
def failed(nimi=""):
return "Sorry, väärä nimi : " + nimi
@app.route('/jinja1', methods=['POST', 'GET'])
def jinja1():
teksti = "Hello world! Töimääkö skändit?"
lista = ["aa", "bb", "cc", "dd", "aa", "aaa"]
nimi = request.values.get("nimi", "")
# listasta valittu. Muista muuntaa intiksi jotta vertailu templatessa toimii
valittu = request.values.get("lista", 0, type=int)
# jo aiemmin syötetyt nimet
nimet = request.values.getlist("nimet")
if len(nimi) > 0:
nimet.append(nimi)
# urlien erikoismerkit on koodattava!
haku = "https://www.google.fi/search?q=" + urllib.parse.quote_plus(nimi)
return render_template("jinja.html", hello=teksti, lista=lista, nimet=nimet, nimi=nimi, valittu=valittu, haku=haku)
@app.route('/jinja2', methods=['POST', 'GET'])
def jinja2():
apu = True
lista = ["aa", "bb", "cc", "dd", "ee", "ää"]
return render_template("jinja2.html", nimi=apu, lista=lista)