使用axios将表单数据提交flask后台 案例

目的:将用户在前端表单中输入的数据提交到后台

前端:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title></title>
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css" />
</head>

<body>
    <div id="app">
        <el-form label-width="80px" :model="formData">
            <el-form-item label="活动名称" style="width:200px;">
                <el-input v-model="formData.name"></el-input>
            </el-form-item>
            <el-form-item label="活动区域">
                <el-select placeholder="请选择活动区域" v-model="formData.area">
                    <el-option label="上海" value="上海"></el-option>
                    <el-option label="北京" value="北京"></el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="活动时间">
                <el-date-picker type="date" placeholder="选择日期" style="width: 200px;" v-model="formData.date1" value-format="yyyy-MM-dd"></el-date-picker>-
                <el-time-picker placeholder="选择时间" style="width: 200px;" v-model="formData.time1" value-format="HH:mm:ss"></el-time-picker>
            </el-form-item>
            <el-form-item label="即时配送">
                <el-switch v-model="formData.switch"></el-switch>
            </el-form-item>
            <el-form-item label="活动性质">
                <el-checkbox-group v-model="formData.activityNature">
                    <el-checkbox label="1">美食/餐厅线上活动</el-checkbox>
                    <el-checkbox label="2">地推活动</el-checkbox>
                    <el-checkbox label="3">线下主题活动</el-checkbox>
                    <el-checkbox label="4">单纯品牌曝光</el-checkbox>
                </el-checkbox-group>
            </el-form-item>
            <el-form-item label="特殊资源">
                <el-radio-group v-model="formData.resource">
                    <el-radio label="1">线上品牌商赞助</el-radio>
                    <el-radio label="2">线下场地免费</el-radio>
                </el-radio-group>
            </el-form-item>
            <el-form-item label="活动形式">
                <el-input type="textarea" v-model="formData.activities"></el-input>
            </el-form-item>
            <el-form-item>
                <el-button type="primary" @click="onSubmit">立即创建</el-button>
                <el-button>取消</el-button>
            </el-form-item>
        </el-form>
    </div>


    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script type="text/javascript" src="../js/vue.js"></script>
    <script src="https://unpkg.com/element-ui/lib/index.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                formData: {
                    name: "轰趴",
                    area: "北京",
                    date1: "",
                    time1: "",
                    switch: true,
                    activityNature: [],
                    resource: "",
                    activities: "",
                    a: 1
                }
            },
            methods: {
                onSubmit() {
                    // console.log(JSON.stringify(this.formData))
                    // //处理Post请求
                    // axios.post(
                    //         "http://192.168.0.120:5000/test", {
                    //             ID: this.formData.a,
                    //             formData: JSON.stringify(this.formData),
                    //         }
                    //     )
                    //     .then(function(response) {
                    //         let data = response.data
                    //         console.log(data)
                    //     })
                    //     .catch(function(error) {
                    //         // console.log(error)
                    //     });
                    axios({
                            url: "/test",
                            method: "post",
                            baseURL: 'http://192.168.0.120:5000',
                            headers: {
                                'X-Requested-With': 'XMLHttpRequest',
                                'Content-Type': 'application/json'
                            },
                            data: {
                                ID: this.formData.a,
                                formData: JSON.stringify(this.formData),
                            },
                            timeout: 2000,

                        })
                        .then(function(response) {
                            let data = response.data
                            console.log(data)
                            alert(data.msg)
                        })
                        .catch(function(error) {
                            // console.log(error)
                        });
                    this.formData.a += 1
                }
            },
        })
    </script>
</body>

</html>

后台:

import time,json
from flask_sockets import Sockets
from gevent import monkey
from flask import Flask, jsonify,request
from gevent import pywsgi
from geventwebsocket.handler import WebSocketHandler
from flask_cors import CORS

monkey.patch_all()

app = Flask(__name__)
sockets = Sockets(app)
CORS(app, supports_credentials=True)

@app.route('/test', methods=["POST","GET"])
def hello():
      response_str = request.get_data(as_text=True)
      data = json.loads(response_str, strict=False)
      print(data)
      return jsonify(msg="ok")


if __name__ == "__main__":
    server = pywsgi.WSGIServer(('0.0.0.0', 5000), app, handler_class=WebSocketHandler)
    print('server start')
    server.serve_forever()

猜你喜欢

转载自blog.csdn.net/ChaoChao66666/article/details/130769367