Форум сайта python.su
Доброго времени суток!
Подскажите как реализовать данную задачу:
Есть форма:
Имя и Любимый цвет
<html> <head> <title>Любимый цвет</title> </head> <body> <form> Имя: <input type="text" name="name"><br> Любимый цвет: <input type="text" name="color"><br> <input type="submit" value="Отправить"> </form> <a href="/table">Внести данные в CSV таблицу</a> <p> <a href="/stats">Глянуть статистику</a> </p> </body></html>
from flask import Flask, request, render_template import codecs app = Flask(__name__) arr = [] arrcolor = [] @app.route('/form') def index(): global arr global arrcolor if u'name' in request.args: for name in request.args: if name == 'name': arr.append(request.args[name]) for color in request.args: if color == 'color': arrcolor.append(request.args[color]) table = codecs.open('tables.csv', 'w', 'utf-8') csv = map(';'.join, zip(arr, arrcolor)) for i in csv: table.write(i) table.write('\r\n') table.close() return render_template('form.html') @app.route('/table') def table_csv(): global arr global arrcolor table = codecs.open('tables.csv', 'w', 'utf-8') csv = map(';'.join, zip(arr, arrcolor)) for i in csv: table.write(i) table.write('\r\n') table.close() @app.route('/stats') def stats(): numbers = [] stat = codecs.open('stat.txt', 'w', 'utf-8') global arrcolor dic_count = {} for color in arrcolor: color = color.lower() if color in dic_count: dic_count[color] += 1 else: dic_count[color] = 1 for key in dic_count: stat.write(max(dic_count[key], key = len)) stat.close() if __name__ == '__main__': app.run(debug=True)
table = codecs.open('tables.csv', 'w', 'utf-8') csv = map(';'.join, zip(arr, arrcolor)) for i in csv: table.write(i) table.write('\r\n') table.close()
Отредактировано BG (Сен. 29, 2013 21:50:12)
Офлайн
Это какой-то очень странный код.
if u'name' in request.args: for name in request.args: if name == 'name': arr.append(request.args[name])
Офлайн
request.args - словарь
условием проверяется наличие данных в форме
в форме у меня два названия:
name - имя, которое пользователь вводит
color - его любимый цвет, который он тоже вводит
делаю это для того, чтобы одна переменная не отвечала за 2 типа введенных данных
Офлайн
BGА вот и ничего подобного, это ImmutableMultiDict.
request.args - словарь
from flask import Flask, request app = Flask(__name__) @app.route('/') def hello_world(): print zip(*request.args.listvalues()) return 'Hello World!' if __name__ == '__main__': app.run()
http://127.0.0.1:5000/?name=John&name=Marry&color=red&color=blue
[(u'red', u'John'), (u'blue', u'Marry')]
Офлайн
Как больно на ваш код смотреть. Используйте формы, как и положено. Есть Flask WTF, в гугль и не надо велосипедов строить.
Офлайн