如何使用Python向网页发送数据

2024-04-25 21:01:29 发布

您现在位置:Python中文网/ 问答频道 /正文

上下文

我创建了这个python flask应用程序。它读取csv文件,计算该文件中的“数据”

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

@app.route('/')


def index():
    return render_template('index.html')

@app.route('/', methods=['POST'])

def index_post():
    if request.method == 'POST':
        req = request.form['fileToUpload']
        df = pandas.read_csv(req)
        base_pay_MEAN = df['BasePay'].mean()
        overtime_MAX = df['OvertimePay'].max()
        highest_paid_Person_NAME = (df[df['TotalPayBenefits'] == max(df['TotalPayBenefits'])]).iloc[0]['EmployeeName']
        highest_paid_Person_SALARY = (df[df['TotalPayBenefits'] == max(df['TotalPayBenefits'])]).iloc[0]['TotalPayBenefits']
        num_Unique_Jobs = df['JobTitle'].nunique()
        most_common_jobs = df.groupby('JobTitle').count().sort_values(by='Id', ascending=False)['Id'].head(3)        
        return render_template('index.html')
    else:
        render_template('index.html')

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

这是HTML文件的一部分

            <p>Please upload your CSV file. The values containing addresses should be in a column named <em>address</em> or <em>Address</em></p>
            <form method='POST'>
                <input type="file" name="fileToUpload" id="fileToUpload">
                <button id="download">Submit</button>
            </form>
            <div class="results">
                <h3 class="base-pay"></h3>
                <p class="base-pay-mean"> </p>
                <p class="base-pay-high"></p>
                <p class="base-pay-low"></p>

                <h3 class="over-time"></h3>
                <p class="over-time-max"></p>

                <h3 class="highest-paid"></h3>
                <p class="highest-paid-person"></p>
                <p class="highest-paid-job"></p>
                <p class="highest-paid-salary"></p>


                <h3 class="lowest-paid"></h3>
                <p class="lowest-paid-person"></p>
                <p class="lowest-paid-job"></p>
                <p class="lowest-paid-salary"></p>
            </div>


这是网页的图片:enter image description here

问题

我已经计算了我需要发送回网页的值,例如基本工资平均值、加班最高值等。我已经创建了一个带有class = "results"<div>,我需要将此数据发送到该分区中的相应标记。但是我如何将其发送回网页? 我的目标是当用户上传CSV文件并单击submit时,页面应该显示必要的值,例如:enter image description here

但我甚至确定从哪里开始

对不起,我的邮件太长了


Tags: 文件appdfbaseindextemplaterenderpay
2条回答

最简单的方法是制作一个字典并通过return jsonify(response_dict)返回它(您需要导入函数from flask import jasonify)。在我的例子中,dict的响应是response_dict = {"message" : reponse_text},就像这里一样https://medium.com/zenofai/creating-chatbot-using-python-flask-d6947d8ef805

@app.route('/send_message', methods=['POST'])
def send_message():
    message = request.form['message']
    project_id = os.getenv('DIALOGFLOW_PROJECT_ID')
    fulfillment_text = detect_intent_texts(project_id, "unique", message, 'en')
    response_text = { "message":  fulfillment_text }
    return jsonify(response_text)

您可以将要显示为关键字参数的值传递给^{}

例如,要显示“Basepay Mean”,您可以从视图(Python部分)向模板发送适当的变量:

base_pay_MEAN = df['BasePay'].mean()
return render_template('index.html', base_pay_MEAN=base_pay_MEAN)

然后在模板(HTML部分)中呈现该变量:

<div class="results">
    <h3 class="base-pay">Basepay:</h3>
    <p class="base-pay-mean">Mean: {{ base_pay_MEAN }}</p>
</div>

相关问题 更多 >