#!/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)