Flask&Python非常陌生,因此想了解/清除我的概念。我有一个使用flask&wtforms创建的网页。 HTML页面非常简单,只有一个字段和一个提交按钮。单击提交按钮时,我想调用python脚本(test.py)本身或python函数(pythonfunction())。还有从网页上有什么方法,无论我输入什么,我都可以作为属性传递给该python脚本(test.py)?感谢帮助
**app.py**
from flask import Flask , render_template,flash,redirect,url_for,session,logging,request
from wtforms import Form,StringField,TextAreaField,PasswordField,validators,SelectField,TextAreaField
from wtforms.widgets import TextArea
import subprocess
import test
app=Flask(__name__)
@app.route ('/')
def index():
return render_template('home.html')
class testpython(Form):
testenter=StringField('Enter something')
@app.route ('/testpage',methods=['GET','POST'])
def testpage():
form=testpython(request.form)
return render_template('testpage.html',form=form,python=testfunc(testenter))
if __name__ == '__main__':
app.run(debug=True)
**test.py**
def pythonfunctiontest (self):
print data #<something i can print here from that text field in webpage>
return "all good"
**testpage.html**
{% extends 'sec_layout.html'%}
{% block body %}
{% from "includes/_formhelpers.html" import render_field %}
<form method="POST" action ="">
<div class="form-group">
{{render_field(form.testenter,cols="1", rows="5",class_="form-control")}}
</div>
<div class="input-bar-item input-bar-item-btn">
<button class="btn btn-info">Submit</button>
</div>
</form>
{% endif %}
{% endblock%}
sec_layout.html
<!DOCTYPE <!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>MY PAGE-TEST</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
</head>
<body>
{% include 'includes/_navbar.html' %}
<div class= "container">
{% block body %}{% endblock%}
</div>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" </script>
</body>
</html>
答案 0 :(得分:0)
这个问题很笼统,所以我会尽力引导您,也许您以后可以更清楚地重温这个问题。
Flask询问服务器并呈现网页。即它在服务器上执行一些代码,并将其传递到客户端Web浏览器。然后,客户端网络浏览器可以在用户浏览时执行客户端代码(即Javascript),并可以使用提交表单(到不同的Flask路由)或通过JavaScript AJAX请求(同样是其他Flask路由)将数据传递回服务器。因此,如果要基于某些输入执行python脚本,则需要一条单独的路由。
这是索引页的简单示例,第二条路线将执行其他操作:
as_p()
=========(index.html)
@app.route('/index')
def index():
""" very basic template render """
return render_template('index.html')
@app.route('/data-submit', methods=["POST"])
def calc():
data = request.form.information.data
# do something with data..
x = data + data
return render_template('new_page.html', x)
答案 1 :(得分:0)
包装temp.py在函数中执行的操作。 将其放置在flask.py所在的目录中。在flask.py中调用import temp,然后使用temp.myfunction()。