Запись html формы ввода в текстовый файл с использованием python - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь использовать этот код для печати числа из HTML-формы в текстовый документ для хранения, но, похоже, он не работает

@app.route("/result",methods = ['POST', 'GET'])
def result():
    if request.method == 'POST':
        timer = request.form['timer_input']
        f = open("timer.txt", "w")
        f.write("Water every {} days".format(timer)
        templateData = template(text = "timer")
        return render_template('timer.html', **templateData)

<form>Set frequencys (e.g. 2 = every 2 days): <br>  
    <input type ="number" name="timer_input">
    <br> 
</form>

Кто-нибудь знает, почему он не работает?Я посмотрел в нескольких местах для альтернатив, но все они используют CGI или PHP, и я не заинтересован в использовании либо

1 Ответ

0 голосов
/ 31 мая 2018

Несмотря на то, что ваша первоначальная проблема выглядит решенной, вот несколько предложений:

  1. Для одного адреса (представления) более типично отображать форму, а для другого адреса -результат, когда форма заполнена.

  2. Операция записи в файл выглядит более безопасной как отдельная функция.Вам нужно закрыть файл или лучше использовать with.

  3. Вы ничего не делаете на GET, поэтому эту функцию можно упростить.

Вот код с этими идеями:

from flask import Flask, request, render_template
app = Flask(__name__)

@app.route('/')
def index():
    return render_template('timer.html')


@app.route("/result", methods= 'POST')
def result():
   timer = request.form['timer_input']
   log_message = "Water every {} days".format(timer)
   screen_message = "Sure, will water every {} days!".format(timer)
   save(log_message)
   return screen_message 


def save(text, filepath='timer.txt'):
    with open("timer.txt", "w") as f:
        f.write(text)

templates / timer.html :

<html><body>

<form action = "result" method = "POST">
Set frequencies (e.g. 2 = every 2 days): 
<br>  
    <input type ="number" name="timer_input">
    <input type = "submit">
<br> 
</form>

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