Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask—在后端处理从前端获得的输入_Python_Flask_Backend - Fatal编程技术网

Python Flask—在后端处理从前端获得的输入

Python Flask—在后端处理从前端获得的输入,python,flask,backend,Python,Flask,Backend,这更多的是一个关于在哪里找到我将如何做这件事的问题,而不是问如何做这件事。我确信这已经被很好地涵盖了,我只是在努力表达我可以用谷歌找到答案的正确术语 无论如何,我有一个Python Flask web应用程序。在网页上,有一个输入框,用于请求用户输入。我希望发生的是,在后台使用用户输入实现一些神奇的效果。在我自己的场景中,我希望获取一个URL,然后使用bs4选择我需要的内容并将其显示在网页上 为了简单起见,我会要求一些简单的东西,然后我可以在此基础上进行构建:如果我要求用户指定一个数字,然后按“

这更多的是一个关于在哪里找到我将如何做这件事的问题,而不是问如何做这件事。我确信这已经被很好地涵盖了,我只是在努力表达我可以用谷歌找到答案的正确术语

无论如何,我有一个Python Flask web应用程序。在网页上,有一个输入框,用于请求用户输入。我希望发生的是,在后台使用用户输入实现一些神奇的效果。在我自己的场景中,我希望获取一个URL,然后使用bs4选择我需要的内容并将其显示在网页上

为了简单起见,我会要求一些简单的东西,然后我可以在此基础上进行构建:如果我要求用户指定一个数字,然后按“提交”,我如何将该数字乘以10

如果我的表单代码是
index.html

<form class="form-horizontal" role="form" method="post" action="/">
    {{ form.csrf_token }}
        <fieldset>
            <div class="form-group">
                <label for="GetNum" class="col-lg-2 control-label">Enter Number</label>
                    <div class="col-lg-6">
                        <input type="text" id="GetNum" name="GetNum" class="form-control" value="">
                    </div>
                <input class="btn btn-success" type="submit" value="Calculate">
            </div>
        </fieldset>
</form>
我的控制器(
app.py
)看起来像:

@app.route('/', methods=['GET', 'POST'])
@login_required
    def home():
    error = None
    form = PostForm(request.form)  # unrelated to question, but will this clash?
    if .. :
        do something
        return redirect(..)
    else:
        do something else..
        return render_template(..)       
我担心的是,如果我必须把数学函数放在那里,
home
函数最终会有大量的代码。So tl;dr,我如何在代码中实现后端功能?(或者请提供资料给我阅读,谢谢!)


另一件事是,我的“/”页面上已经有了一个表单,我是否必须像form1 form2那样重命名表单,因为它们会冲突,还是可以呢?

在代码库的其他地方,或者在同一个文件中,或者更可能 可以定义复杂任务的模块或包。让 在与您的应用程序相同的目录中创建一个简单模块
complex.py
然后定义复杂任务的其他代码:

def do_really_complicated_thing(info):
    # lots of complicated steps
    return really_complicated_data
然后在我们的视图代码中,我们可以使用它,而不是将其嵌入:

from complicated import do_really_complicated_thing

@app.route('/', methods=['GET', 'POST'])
@login_required
def home():
    error = None
    form = PostForm(request.form)
    if form.validate_on_submit() :
        info = form.info.data
        complicated_task = do_really_complicated_thing(info)
        return render_template('something', results=complicated_task)
 
简言之,你要找的术语是包和模块,它们 帮助您的代码更整洁和可重用

至于冲突表单-您可以将表单定位到一个特定的路由,该路由只处理该表单,这比在单个路由中验证/解析不同的表单要干净得多

from complicated import do_really_complicated_thing

@app.route('/', methods=['GET', 'POST'])
@login_required
def home():
    error = None
    form = PostForm(request.form)
    if form.validate_on_submit() :
        info = form.info.data
        complicated_task = do_really_complicated_thing(info)
        return render_template('something', results=complicated_task)