精华内容
下载资源
问答
  • 主要针对Excel的流文件或者其他数据文件,并解决中文乱码问题 后端 def data_output(request, e): # data_df = None try: data_df = pd.read_sql_table(e, con=mysql_engine_raw) except: data_df = pd.read_...

    主要针对Excel的流文件或者其他数据文件,并解决中文乱码问题

    1. 后端
    def data_output(request, e):
        # data_df = None
        try:
            data_df = pd.read_sql_table(e, con=mysql_engine_raw)
        except:
            data_df = pd.read_pickle('./../demo/file_processed/%s' % e)
        try:
            style = xlwt.XFStyle()  # 初始化样式
            font = xlwt.Font()  # 为样式创建字体
            font.name = u'SimSun'
            font.height = 11 * 20
            style.font = font
            workbook = xlwt.Workbook(encoding='utf8')
            worksheet = workbook.add_sheet(e)
            col = list(data_df.keys())
            length = len(col)
            # print(col)
            for i in range(len(col)):
                worksheet.write(0, i, col[i], style)
            for j in range(1, len(data_df) + 1):
                for k in range(length):
                    worksheet.write(j, k, str(data_df.iloc[j - 1, k]), style)
            response = HttpResponse(content_type='application/vnd.ms-excel')
            response['Content-Disposition'] = 'attachment; filename=%s.xls' % e
            excel_stream = io.BytesIO()
            workbook.save(excel_stream)
            res = excel_stream.getvalue()
            excel_stream.close()
            response.write(res)
            return response
        except Exception as ee:
            try:
                data_df = pd.read_sql_table(e, con=mysql_engine_raw)
            except:
                data_df = pd.read_pickle('./../demo/Files_Receive/%s' % e)
            excel_stream = io.BytesIO()
            workbook = xlsxwriter.Workbook(excel_stream)
            worksheet = workbook.add_worksheet(e)
            col = list(data_df.keys())
            length = len(col)
            for i in range(len(col)):
                worksheet.write(0, i, col[i])
            for j in range(1, len(data_df) + 1):
                for k in range(length):
                    worksheet.write(j, k, str(data_df.iloc[j - 1, k]))
            response = HttpResponse(content_type='application/vnd.ms-excel')
            response['Content-Disposition'] = 'attachment; filename=%s.xlsx' % e
    
            workbook.close()
            res = excel_stream.getvalue()
            excel_stream.close()
            response.write(res)
            return response
    
    
    2.JS前端获取
    
    ```javascript
    <script>
        $(document).ready(function(){
            $("#upload_multi_data").click(function(){
                console.log("点击'上传多条记录'按钮触发事件");
                var form = new FormData();
    
                var file = document.getElementById('modal-upload-file-input-multi').files[0];
                var discrete_col_list = {{ discrete_col_list|safe }};
                var date_list = {{ date_list|safe }};
                var _url = window.location.href;
                var model_name = _url.substring(_url.lastIndexOf('/')+1, _url.length);
    
                form.append("file", file);
                form.append("discrete_col_list", {{ discrete_col_list|safe }});
                form.append("date_list", {{ date_list|safe }});
                form.append("model_name", model_name);
    
                var request = new XMLHttpRequest();
                request.responseType = "arraybuffer"; //没有这一行将导致中文乱码
                request.open("POST", "{% url 'upload_multi_data' %}",true);
                request.onreadystatechange=function()
                {
                    if (request.readyState==4 && request.status==200)
                    {
                        var data = request.response;
                        var fileName = this.getResponseHeader("content-disposition").split(";")[1].split("filename=")[1];
    
                        var elink = document.createElement('a');
                        elink.download = fileName;
                        elink.style.display = 'none';
                        var blob = new Blob([data],{type:'application/vnd.ms-excel'});
                        elink.href = URL.createObjectURL(blob);
                        document.body.appendChild(elink);
                        elink.click();
                        document.body.removeChild(elink);
                    }
                }
                request.send(form)
                console.log("发送成功")
            })
        })
    </script>
    
    展开全文
  • 需求:小程序端拍照调用python训练好的图片分类模型。实现图片分类识别的功能。 微信小程序端: 重点在chooseImage函数中,根据图片路径获取到图片传递给flask的url; Page({ data: { SHOW_TOP: true, ...

    需求:小程序端拍照调用python训练好的图片分类模型。实现图片分类识别的功能。
    微信小程序端:
    重点在chooseImage函数中,根据图片路径获取到图片传递给flask的url;

    Page({
        data: {
            SHOW_TOP: true,
            canRecordStart: false,
        },
        data: {
            tempFilePaths:'',
            sourceType: ['camera', 'album']
          },
        isSpeaking: false,
        accessToken: "",
        onLoad: function (options) {
            
            console.log("onLoad!");
            this.setHeader();
            var that=this
            wx.showShareMenu({
                withShareTicket: true //要求小程序返回分享目标信息
            });
            var isShowed = wx.getStorageSync("tip");
            if (isShowed != 1) {
                setTimeout(() => {
                    this.setData({
                        SHOW_TOP: false
                    })
                    wx.setStorageSync("tip", 1)
                }, 3 * 1000)
            } else {
                this.setData({
                    SHOW_TOP: false
                })
            };
            
        },
        },
    
    
        
     //头像点击处理事件,使用wx.showActionSheet()调用菜单栏
     buttonclick: function () {
        const that = this
        wx.showActionSheet({
          itemList: ['拍照', '相册'],
          itemColor: '',
          //成功时回调
          success: function (res) {
            if (!res.cancel) {
              /*
               res.tapIndex返回用户点击的按钮序号,从上到下的顺序,从0开始
               比如用户点击本例中的拍照就返回0,相册就返回1
               我们res.tapIndex的值传给chooseImage()
              */
              that.chooseImage(res.tapIndex)
            }
          },
          
    setHeader(){
        const tempFilePaths = wx.getStorageSync('tempFilePaths');
        if (tempFilePaths) {
          this.setData({
            tempFilePaths: tempFilePaths
          })
        } else {
          this.setData({
            tempFilePaths: '/images/camera.png'
          })
        }
      },
    
    
      chooseImage(tapIndex) {
        const checkeddata = true
        const that = this
        wx.chooseImage({
        //count表示一次可以选择多少照片
          count: 1,
          //sizeType所选的图片的尺寸,original原图,compressed压缩图
          sizeType: ['original', 'compressed'],
          //如果sourceType为camera则调用摄像头,为album时调用相册
          sourceType: [that.data.sourceType[tapIndex]],
          success(res) {
            // tempFilePath可以作为img标签的src属性显示图片
            console.log(res);
            const tempFilePaths = res.tempFilePaths
            //将选择到的图片缓存到本地storage中
            wx.setStorageSync('tempFilePaths', tempFilePaths)
            /*
    		由于在我们选择图片后图片只是保存到storage中,所以我们需要调用一次   	        setHeader()方法来使页面上的头像更新
    		*/
            that.setHeader();
            // wx.showToast({
            //   title: '设置成功',
            //   icon: 'none',
            // //   duration: 2000
            // })
            wx.showLoading({
                title: '识别中...',
            })
            
            var team_image = wx.getFileSystemManager().readFileSync(res.tempFilePaths[0], "base64")
            wx.request({
              url: 'http://127.0.0.1:5000/upload', //API地址,upload是我给路由起的名字,参照下面的python代码
                         method: "POST",
              header: {
                         'content-type': "application/x-www-form-urlencoded",
                        },
              data: {image: team_image},//将数据传给后端
         
            success: function (res) {
                console.log(res.data);  //控制台输出返回数据  
                wx.hideLoading()
                wx.showModal({
    
                    title: '识别结果', 
                    confirmText: "识别正确",
                    cancelText:"识别错误",
                    content: res.data, 
                    success: function(res) { 
                    if (res.confirm) {
                    console.log('识别正确')
                    } else if (res.cancel) {
                    console.log('重新识别')
                    }
                    
                    }
                    
                    })     
              }
    
            })
            
            
      
    
    
    
            
          }
        })
       
    
      },
    
    });
    
    
    
    

    flask端:
    将图片裁剪,填充,调用自己训练保存最优的模型,用softmax处理结果矩阵,最后得到预测种类

    # coding=utf-8
    from flask import Flask, render_template, request, jsonify
    from werkzeug.utils import secure_filename
    from datetime import timedelta
    from flask import Flask, render_template, request
    import torchvision.transforms as transforms
    from PIL import Image
    from torchvision import models
    import os
    import torch
    import json
    import numpy as np
    import torch.nn as nn
    import matplotlib.pyplot as plt
    import base64
    
    
    app = Flask(__name__)
    
    
    def softmax(x):
        exp_x = np.exp(x)
        softmax_x = exp_x / np.sum(exp_x, 0)
        return softmax_x
    
    
    with open('dir_label.txt', 'r', encoding='utf-8') as f:
        labels = f.readlines()
        print("oldlabels:",labels)
        labels = list(map(lambda x: x.strip().split('\t'), labels))
        print("newlabels:",labels)
    
    
    def padding_black(img):
        w, h = img.size
    
        scale = 224. / max(w, h)
        img_fg = img.resize([int(x) for x in [w * scale, h * scale]])
    
        size_fg = img_fg.size
        size_bg = 224
    
        img_bg = Image.new("RGB", (size_bg, size_bg))
    
        img_bg.paste(img_fg, ((size_bg - size_fg[0]) // 2,
                                  (size_bg - size_fg[1]) // 2))
    
        img = img_bg
        return img
    # 输出
    @app.route('/')
    def hello_world():
        return 'Hello World!'
    
    # 设置允许的文件格式
    ALLOWED_EXTENSIONS = set(['png', 'jpg', 'JPG', 'PNG', 'bmp'])
    def allowed_file(filename):
        return '.' in filename and filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS
    
    # 设置静态文件缓存过期时间
    app.send_file_max_age_default = timedelta(seconds=1)
    
    # 添加路由
    @app.route('/upload', methods=['POST', 'GET'])
    def upload():
        if request.method == 'POST':
            # 通过file标签获取文件
            team_image = base64.b64decode(request.form.get("image"))  # 队base64进行解码还原。
            with open("static/111111.jpg", "wb") as f:
                f.write(team_image)
            image = Image.open("static/111111.jpg")
            # image = Image.open('laji.jpg')
            image = image.convert('RGB')
            image = padding_black(image)
            transform1 = transforms.Compose([
                transforms.Resize(224),
                transforms.ToTensor(),
            ])
            image = transform1(image)
            image = image.unsqueeze(0)
            # image = torch.unsqueeze(image, dim=0).float()
            print(image.shape)
            model = models.resnet50(pretrained=False)
            fc_inputs = model.fc.in_features
            model.fc = nn.Linear(fc_inputs, 214)
            # model = model.cuda()
            # 加载训练好的模型
            checkpoint = torch.load('model_best_checkpoint_resnet50.pth.tar')
            model.load_state_dict(checkpoint['state_dict'])
            model.eval()
    
            src = image.numpy()
            src = src.reshape(3, 224, 224)
            src = np.transpose(src, (1, 2, 0))
            # image = image.cuda()
            # label = label.cuda()
            pred = model(image)
            pred = pred.data.cpu().numpy()[0]
    
            score = softmax(pred)
            pred_id = np.argmax(score)
    
            plt.imshow(src)
            print('预测结果:', labels[pred_id][0])
            # return labels[pred_id][0];
            return json.dumps(labels[pred_id][0], ensure_ascii=False)//将预测结果传回给前端
            # plt.show()
        #     return render_template('upload_ok.html')
        #     重新返回上传界面
        # return render_template('upload.html')
    
    
    if __name__ == '__main__':
        app.run(debug=False)
    

    大致的效果:
    在这里插入图片描述
    在这里插入图片描述
    但是在手机上测试的话,wx.request{}里的url的域名不规范,不能出现这种端口号,目前还在想解决办法,有知道的大佬还望告知。

    展开全文
  • python 后端接收前端传到后端数据的4种方式 1,以查询字符串的方式传入 def test(request): #查询字符串方式传参的获取 a = request.GET.get('a') #a为健 b = request.GET.getlist('b') #一建多值的情况...

    python 后端接收前端传到后端的数据的4种方式
    1,以查询字符串的方式传入

    def test(request): #查询字符串方式传参的获取
        a = request.GET.get('a')  #a为健
        b = request.GET.getlist('b') #一建多值的情况(QuerySet)
        return a,b
    

    2,url传参的方式

    def test1(request,x,y): #url方式传参的接收
        print(x,y)
        return x+y
    

    3,以form_data方式传输

    def test2(request): #form-data方式传参的接收
        name = request.POST.get('name')
        password = request.POST.get('password')  #列表方式用getlist()方法
        return name
    

    4,以json数据传输

    import json
    
    def get_body_json(request):
        # 获取 json 类型数据: 
        json_bytes = request.body
        # 将 bytes 类型转为 str
        json_str = json_bytes.decode()
    
        # python3.6 及以上版本中, json.loads() 方法可以接收 str 和 bytes 类型
        #但是 python3.5 以及以下版本中, json.loads() 方法只能接收 str, 
        # 3.5 需要有上面的编码步骤.
    
        req_data = json.loads(json_str)
        print(req_data['a'])
        print(req_data['b'])
        return HttpResponse('OK')
    

    来源:https://www.cnblogs.com/wjun0/p/11569716.html

    展开全文
  • 前端后端数据交互,最常用的就是GET、POST,比较常用的用法是:提交表单数据后端后端返回json前端数据发送与接收1)提交表单数据2)提交JSON数据后端数据接收与响应1)接收GET请求数据2)接收POST请求...

    前端与后端的数据交互,最常用的就是GET、POST,比较常用的用法是:提交表单数据到后端,后端返回json

    前端的数据发送与接收

    1)提交表单数据

    2)提交JSON数据

    后端的数据接收与响应

    1)接收GET请求数据

    2)接收POST请求数据

    3)响应请求

    前端的数据发送与接收

    1. 提交表单数据

    # GET请求

    var data = {

    "name": "test",

    "age": 1

    };

    $.ajax({

    type: 'GET',

    url: /your/url/,

    data: data, # 最终会被转化为查询字符串跟在url后面: /your/url/?name=test&age=1

    dataType: 'json', # 注意:这里是指希望服务端返回json格式的数据

    success: function(data) { # 这里的data就是json格式的数据

    },

    error: function(xhr, type) {

    }

    });

    # POST请求

    var data = {}

    # 如果页面并没有表单,只是input框,请求也只是发送这些值,那么可以直接获取放到data中

    data['name'] = $('#name').val()

    # 如果页面有表单,那么可以利用jquery的serialize()方法获取表单的全部数据

    data = $('#form1').serialize();

    $.ajax({

    type: 'POST',

    url: /your/url/,

    data: data,

    dataType: 'json', # 注意:这里是指希望服务端返回json格式的数据

    success: function(data) { # 这里的data就是json格式的数据

    },

    error: function(xhr, type) {

    }

    });

    注意:

    A)参数dataType:期望的服务器响应的数据类型,可以是null, xml, script, json

    B)请求头中的Content-Tpye默认是Content-Type:application/x-www-form-urlencoded,所以参数会被编码为 name=xx&age=1 这种格式,提交到后端,后端会当作表单数据处理

    2. 提交JSON数据

    如果要给后端传递json数据,就需要增加content-type参数,告诉后端,传递过来的数据格式,并且需要将data转为字符串进行传递。实际上,服务端接收到后,发现是json格式,做的操作就是将字符串转为json对象。

    另外,不转为字符串,即使加了content-type的参数,也默认会转成 name=xx&age=1,使后端无法获取正确的json

    # POST一个json数据

    var data = {

    “name”: "test",

    "age", 1

    }

    $.ajax({

    type: 'POST',

    url: /your/url/,

    data: JSON.stringify(data), # 转化为字符串

    contentType: 'application/json; charset=UTF-8',

    dataType: 'json', # 注意:这里是指希望服务端返回json格式的数据

    success: function(data) { # 这里的data就是json格式的数据

    },

    error: function(xhr, type) {

    }

    });

    后端的数据接收与返回

    1. 接收GET请求数据

    name = request.args.get('name', '')

    age = int(request.args.get('age', '0'))

    2. 接收POST请求数据

    接收表单数据

    name = request.form.get('name', '')

    age = int(request.form.get('age', '0'))

    接收Json数据

    data = request.get_json()

    9867634.html

    get_json的源码.png

    另外,如果前端提交的数据格式不能被识别,可以用request.get_data()接收数据。

    微信公众号后台接收微信推送的xml格式的消息体,就可以用request.get_data()来接收

    3. 响应请求

    Flask可以非常方便的返回json数据

    from Flask import jsonify

    return jsonify({'ok': True})

    9867634.html

    jsonify源码

    看一下源码就可以知道,jsonify就是帮我们做了点添加mimetype这样的杂事,所以如果不嫌麻烦和难看,你也可以这样写

    # 太丑了,还是别这么干了

    return Response(data=json.dumps({'ok': True}), mimetype='application/json')

    放两张截图来直观看一下请求

    9867634.html

    post表单数据到服务端.png

    9867634.html

    Post JSON数据到服务端

    展开全文
  • vue前端与Django后端数据交互

    千次阅读 2021-02-22 16:56:49
    本文简单记录了vue前端与Django后端数据交互
  • 关于POST和GET的请求方法和区别请参考:HTTP协议下GET与POST的区别GET方法首先先使用html简单编写一个表单页面代码如下:&lt;!...gt; &...GET方法传递数据(runoob.com)&lt;/title&gt; &am
  • 今天小编就为大家分享一篇python后端接收前端回传的文件方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 前端后端数据交互,最常用的就是GET、POST,比较常用的用法是:提交表单数据后端后端返回json前端数据发送与接收1)提交表单数据2)提交JSON数据后端数据接收与响应1)接收GET请求数据2)接收POST请求...
  • python软件开发,php软件开发,后端开发,运维自动化系统开发,堡垒机,云管平台,企业it信息化解决方案管理系统开发...前言hello,我是kuls.又已经有一段时间没写原创了,今天总算闲了一会,趁着这个闲暇来写篇文章...
  • 现在想通过udp做一个聊天小案列,数据展示都是在前端,问题是,后端接受到消息后不知道怎么主动向前端提交。
  • Django在后端向前端传数据时,多数会使用dict字典来传送多个数据,但前端只能遍历,没有一个用key取到value值的方法可以直接使用 如果作为一个list传递到前端,结构相同情况下,遍历确实够用。但是使用dict时多数会...
  • 首先简要说明:前端后端请求数据后端根据前端请求数据的类别分析其需求,并连接到数据库获取相应数据: 来一段简单的实例代码模拟淘宝商城: 前端代码: <!DOCTYPE html> <html> <head&...
  • 简单写一个用户注册的页面:用户名、密码,...后端程序: from flask import Flask from flask import render_template from flask import request app = Flask(__name__) @app.route('/') def index_view(): #...
  • python后端开发面试常见问题 (持续更新)

    万次阅读 多人点赞 2021-03-14 15:21:18
    本篇文章将在GitHub和CSDN上持续更新,主要是Python后端开发的一些常见问题,包括Python的一些基础知识,以及面试中常问的计网,数据库,数据结构等一些算法题,总体覆盖面试的大多数问题。 本文的GitHub地址为:...
  • 一、 文本域和单选按钮前端 文本域和单选按钮表单获取方法一样Username....... 男 女文本pyhon 后端用request.values.get("name") 去获取if request.method == "POST":username = request.values.get("username")sex...
  • 前端收到响应后通过js对页面上显示的东西进行修改代码1:# 前端function demo(demo_id) {$.ajax({url: 'url',type: 'POST',headers: {"X-CSRFToken":'{{ csrf_token }}' },data: {demo_id: demo_id},dataType:'json'...
  • 前端form表单上传图片等信息,python后端接收。 最近总需要做关于图片上传的东西。一直百度,这次想自己记录一下。 HTML代码: <form class="box" action="这里写后端接口地址" method="POST" enctype="multipart...
  • 传递过来的数据 OrderedDict([('imagecode_id', UUID('db7c5517-ccae-487f-9fb3-a2043fbd5cd0')), ('image_string', 'C3A4')]) 验证图片的真正字符串 b'C3A4' 数据库去处的字符格式 这是传递过来的图片文字 验证...
  • 后台python实现RSA非对称加密 先熟悉使用 在后台使用RSA实现秘钥生产,加密,解密; # -*- encoding:utf-8 -*- import base64 from Crypto import Random from Crypto.Cipher import PKCS1_v1_5 as Cipher_...
  • python后端对接微信支付引言一、流程简述&难点简析二、前期准备三、统一下单四、生成前端所需参数五、总结 注意:原创文章,转载请注明出处。 引言 我从未想到就调两个接口那么难! 前段时间由于项目需要,开发...
  • 使用Flutter前端Python Flask后端创建的全栈移动天气应用程序,可从OpenWeatherMap API( )中获取预报数据,并从WeatherBit( )中获取空气质量数据 )。 入门 项目仍在开发中...后续的完整文档。敬请关注! 致谢...
  • 这一篇文章是前端用 RSA 的 publicKey 进行加密,然后后端Python 进行解密的示例。
  • 回忆一下遇到的坑: 1.<form>标签下的<input>、<textarea>等标签必须带有name属性才能被form捕捉提交。 2.POST方法提交时要用request.form来获取,而用GET方法则用...前端后端数据交互,最常用...
  • 获取form中隐藏标签的csrftoken值,加入到请求数据中传给后端 data: { csrfmiddlewaretoken:$('[name="csrfmiddlewaretoken"]').val() }, 3.cookie中存在csrftoken,将csrftoken值放到请求头中 headers:{ "X-...
  • 前端vue与后端Flask数据传输交互(demo) 1.实现目的 昨天过了一遍vue加flask的教程,然后准备把自己以前写的简单demo变成vue和flask的形式的。 流程: (1)在前端输入框输入【英文单词】 (2)点击提交按钮,POST...
  • 前端后端数据交互,最常用的就是GET、POST,比较常用的用法是:提交表单数据后端后端返回json 前端数据发送与接收1)提交表单数据2)提交JSON数据 后端数据接收与响应1)接收GET请求数据2)接收...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,960
精华内容 9,184
关键字:

前端获取python后端数据

python 订阅