在FLASK中使用POST方法更改值?

时间:2016-10-21 17:18:13

标签: python python-2.7 flask

我是StackOverflow和Python的新手。我正在尝试制作一个基本的应用程序,我有我的<形式>标签,我的烧瓶应用程序和我的.txt。我正在尝试改变价值观,但它不起作用,或者我不知道为什么它不起作用。你能不能帮我一把忙?

Python Flask:

from flask import Flask,render_template,flash,request,redirect
import os
app = Flask(__name__)
from lines import get_line

@app.route('/', methods=['POST'])
def change_line():
    search_line= "this"
    try:
        for line in this.input(os.path.join(APP_STATIC, u'line.txt'),inplace=1):

            if search_line in line:

                    x = line.replace(search_line,search_line + "\n" + request.form.get(u'this'))

                    print (x)
            else:

                print (x)

    except BaseException as e:
        print e

    return render_template('line.html')


@app.route('/')
def showLine():
    line = get_line()
    return render_template('line.html', line=line)


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

HTML:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Change the value of this line</title>
</head>
<body>
    <form method="post" name="test">
                            <h4>Chaging Values with POST Method</h4>
                            <div class="col-sm-9">
                            <label class="col-sm-3 col-sm-3 control-label">I want to change : </label>
                            <input type="text" class="form-control" name="address" value="{{ line }}">
                            </div>

                            <input type="submit" value="Save Changes!">


    </form>

我的.txt文件:

  

我想更改

它返回“this”的值。

基本上当我运行我的应用程序时,当我尝试编辑“Hello”时它显示“this”它会给我一个错误:

  
      
  • http://127.0.0.1:5000/上运行(按CTRL + C退出)Line   找到了! : 这个。   127.0.0.1 - - [21 / Oct / 2016 13:09:07]“GET / HTTP / 1.1”200 - 全局名称'this'未定义   127.0.0.1 - - [21 / Oct / 2016 13:09:30]“POST / HTTP / 1.1”200 -
  •   

我的输出: Please click here to see my output

我很抱歉,如果这是一个愚蠢的问题,或者如果之前已经回答过这个问题,但我一直在寻找答案,但我没有发现任何相关问题,我尝试了不同的代码,但没有工作,一直在观看youtube视频和一切。

如果有人知道解决方案对我有用。

这是学习和Python学校。谢谢!

使用Python 2.7

修改

我使用下面的建议更新了代码,但它还没有运行。 它不会用replace替换我的“this”。

from flask import Flask,render_template,flash,request,redirect
import os
app = Flask(__name__)
from lines import get_line
import fileinput

@app.route('/', methods=['POST'])
def change_line():
    search_line= "this"
    try:
        for line in fileinput.input(os.path.join(APP_STATIC, u'line.txt'),inplace=1):

            if search_line in line:

                    x = line.replace(search_line,search_line + "\n" + request.form.get(u'asd'))

                    print (x)
            else:

                print (x)

    except BaseException as e:
        print e

    return render_template('line.html')


@app.route('/')
def showLine():
    line = get_line()
    return render_template('line.html', line=line)


if __name__ == '__main__':
    app.run(debug=True)

1 个答案:

答案 0 :(得分:0)

this.input(os.path.join(APP_STATIC, u'line.txt'),inplace=1):

应该是

fileinput.input(os.path.join(APP_STATIC, u'line.txt'),inplace=1):

(您还需要import fileinput

你需要改变它,因为this.input并不意味着任何对python的东西......它不知道this是什么......

  

全局名称'this'未定义

另外,在开发

时,你应该真正使用app.run(debug=True)