#!/usr/bin/python # -*- coding: utf-8 -*- from flask import Flask, session, redirect, url_for, escape, request, Response, render_template, make_response import os import json app = Flask(__name__) app.debug = True @app.route('/text', methods=['GET','POST']) def ajax_text(): resp = make_response( "" ) tiedot = "" # if request.method == "POST": # tehtävä kaksi silmukkaa, koska joillakin kentillä voi olla useampi arvo (valinta) for k in request.values.keys(): for val in request.values.getlist(k): tiedot = tiedot + k + " : " + val + "\n" resp = make_response( tiedot ) resp.charset = "UTF-8" resp.mimetype = "text/plain" return resp @app.route('/json', methods=['GET','POST']) def ajax_json(): tiedot = {} # if request.method == "POST": # sama kuin edellä mutta nyt kasataan dict eikä merkkijonoa for k in request.values.keys(): for val in request.values.getlist(k): # jos avain löytyy jo niin kokeillaan onko se jo lista # jos ei ole niin luodaan lista johon laitetaan jo olemassaollut arvo # ja uusi arvo # Kentät joilla on useampi kuin yksi arvo esitetään siis listoina if k in tiedot: try: tiedot[k].append( val ) except: tiedot[k] = [tiedot[k], val] else: # oletustilanne eli kenttä jolla on vain yksi arvo tiedot[k] = val resp = make_response( json.dumps(tiedot) ) resp.charset = "UTF-8" resp.mimetype = "application/json" return resp # Halutaan tarkistaa lähetetyt tiedot. Palautetaan json-muodossa tietorakenne # jossa on jokaista kenttää vastaava mahdollinen virhe @app.route('/tarkista', methods=['GET','POST']) def tarkista(): virheet = {} if request.method == "POST": kentat = ["nimi", "katuosoite", "postitoimipaikka", "puhelinnumero"] for k in kentat: if not request.form.get(k, ""): virheet[k] = k + u" puuttuu" #erikoistapaus, koska voi saada useamman arvon if not request.form.getlist("valinta"): virheet["valinta"] = u"valinta puuttuu" # tyhmempi versio kommentoitu pois # nimi = request.form.get("nimi", "") # katuosoite = request.form.get("katuosoite", "") # postinumero = request.form.get("postinumero", "") # postitoimipaikka = request.form.get("postitoimipaikka", "") # puhelinnumero = request.form.get("puhelinnumero", "") # valinta = request.form.getlist("valinta") # if not nimi: # virheet["nimi"] = u"Nimeä ei ole syötetty" # if not katuosoite: # virheet["katuosoite"] = u"Katuosoitetta ei ole syötetty" # if not postinumero: # virheet["postinumero"] = u"Postinumeroa ei ole syötetty" # if not postitoimipaikka: # virheet["postitoimipaikka"] = u"Postitoimipaikkaa ei ole syötetty" # if not puhelinnumero: # virheet["puhelinnumero"] = u"Puhelinnumeroa ei ole syötetty" # if not valinta: # virheet["valinta"] = u"Valintaa ei ole tehty" # numeeriset kentät pitää tarkastaa erikseen # tämän pitäisi olla fiksumpi mutta nyt vain kokeilee onko kokonaisluku try: postinumero = int(request.form.get("postinumero", "")) except: virheet["postinumero"] = u"Postinumero on väärä" resp = make_response( json.dumps(virheet) ) resp.charset = "UTF-8" resp.mimetype = "application/json" return resp if __name__ == '__main__': app.debug = True app.run(debug=True)