Как записать ввод из поля ввода с веб-сайта flask в файл csv или txt - PullRequest
0 голосов
/ 06 мая 2020

У меня есть веб-сайт basi c flask, и я хотел бы знать, как записать ввод из поля ввода basi c в файл csv или txt. Я думал, что мой код будет работать, но все, что он сделал, это создал пустой файл csv. Мой код:

from flask import Flask, request, render_template
import csv
import io


app = Flask(__name__)
f = open('test.csv')
outFile = open('containers.csv', 'w')

free = csv.reader(f)
outFile.write("number" + '\n')


@app.route('/')
def my_form():
    return render_template('form.html')

@app.route('/', methods=['POST'])
def my_form_post():
    text = request.form['u']
    marker = str(text)
    return "You inputed " + text
    for row in free
        outFile.write(marker + '\n')

    f.close()
    outFile.close()


if __name__ == "__main__":
    app.run()

Мой html код:

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Input</title>
  </head>
  <body>
  <form method="POST">
    <p>Input</p><br>
    <input name='u'>
    <input type='submit'>
  </form>
 </body>
</html>

Я почти уверен, что проблема в разделе python, но я не знаю, что происходит неправильно

1 Ответ

1 голос
/ 06 мая 2020

Для записи в текстовый файл, почему бы не определить такую ​​функцию, как:

def write_file(data):
    with open('containers.txt', 'a') as f:
        f.write(data + '\n')

Помещение функции open в оператор with означает, что объект f доступен в этом блоке . Файл также автоматически закрывается, когда блок завершается.

Тогда у вас может быть одна функция просмотра, которая обрабатывает как рендеринг формы, так и принимает опубликованный результат:

@app.route('/', methods = ['GET','POST'])
def my_form():
    if request.method=='POST':
        text = request.form['u']
        write_file(text)
        return "You inputed " + text
    elif request.method=="GET":
        return render_template('form.html')

Вы также должны добавьте атрибут action к начальному тегу form:

<form method='POST' action='{{ url_for("my_form") }}'>

Теперь форма будет отправлена ​​на правильную конечную точку, даже если вы измените конечную точку, назначенную функции my_form.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...