公司的python工程师不会js和python数据交互,所以我就去试了一下。

首先安装python,django框架和django-cors-headers。

python官网下载,按提示操作,记住最后勾选add to path。

django和django-cors-headers可以用命令下载。

pip install django和pip install django-cors-headers

django是一个MVC框架,类似于SpringMVC,它号称MTC框架,model、template、controller,但使用率不高。

django-cors-headers用于解决跨域问题,前端是用的iview-admin,所以要跨域。

2.7以上的python创建项目,使用dos命令:django-admin startproject 项目名 来创建项目。

解决跨域问题,在setting.py中:

INSTALLED_APPS里面添加1项:'corsheaders'。

MIDDLEWARE里面添加2项:

'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware'

再后面添加:

CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_ORIGIN_WHITELIST = (
'*'
)

CORS_ALLOW_METHODS = (
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
'VIEW',
)

CORS_ALLOW_HEADERS = (
'XMLHttpRequest',
'X_FILENAME',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
'Pragma',
)

基本配置已经设置完毕,下面开始写方法。

urls.py中配置路由,类似于SpringMVC的@RequestMapping和vue的router,请注意它的格式。

引入:

from django.conf.urls import url,include
from . import view

配置:

urlpatterns中添加url(r'^calculationAfter$', view.resultsData),第一个参数是路由的名字,注意格式r"^路由名字$"),第二个参数是文件名.方法名。

在view.py中添加一个方法:

from django.http import HttpResponse
from django.http import JsonResponse

def resultsData(request):
postBody = eval(str(request.body, encoding='utf-8'))
print(postBody)
# 计算结果
results = [
{'title':'TFe','index':'61.89'},
{'title':'CaO','index':'4.84'},
{'title':'SiO2','index':'3.02'},
{'title':'MgO','index':'1.75'},
{'title':'Al2O3','index':'1.68'},
{'title':'R2','index':'1.6'},
{'title':'烧结矿成本','index':'899.514'}
]
return JsonResponse(results, safe=False)

因为python有CSRF保护机制,直接请求会报错403,要在MIDDLEWARE中注释掉这一项:django.middleware.csrf.CsrfViewMiddleware

post请求要转码,先把request.body转成str,再转换utf-8,再用eval自动转为list或者dict,最后用JsonResponse()返回。第二个参数是safe=False

前面两句是接收请求参数。python也可以用request.GET["参数名"]和request.POST.get["参数名"]接受请求的参数,注意前台的请求是data还是params。

启动python,dos输入 python manage.py runserver 0.0.0.0:8088,后面的端口号可以修改。

打开浏览器访问:127.0.0.1:8088/calculationAfter,也可以使用postman类似工具或者直接写个画面,用axios或者ajax测试一下。

还有python对数据库的增删改查,也挺简单的。安装mysqlclient即可,时间有限,下次再写。

python接收axios的post请求,并处理后返回数据的更多相关文章

  1. 如何解决异步接口请求快慢不均导致的数据错误问题? - DevUI

    DevUI 是一款面向企业中后台产品的开源前端解决方案,它倡导沉浸.灵活.至简的设计价值观,提倡设计者为真实的需求服务,为多数人的设计,拒绝哗众取宠.取悦眼球的设计.如果你正在开发 ToB 的工具类产 ...

  2. 用ajax的同步请求解决登陆注册需要根据服务器返回数据判断是否能提交的问题

    最近在写www.doubilaile.com的登陆注册.需要用ajax请求服务器判断用户名是否存在,用户名和密码是否匹配,进而提交数据.碰到的问题是异步请求都能成功返回数据,但是该数据不能作为紧接着的 ...

  3. vue --- axios发post请求后台接收不到参数的三种解决方案

    最近用vue  做项目使用axios 发送post 请求时遇到了前端传数据后端接收不到的情况: 后来仔细对比发现axios传值是这样的: 而 ajax 传值是这样的: 一个 Request Paylo ...

  4. 接收某项课程id,通过axios发起get请求,由于携带params出现的问题(已解决)

    问题:在最新课程页面(NewBook.vue)点击某一项课程,通过传递该课程的 id 跳转至课程详情页(Bookdetail.vue),采取的跳转方式是声明式导航,即 <router-link  ...

  5. vue使用Axios做ajax请求

    vue2.0之后,就不再对vue-resource更新,而是推荐使用axios 1. 安装 axios $ npm install axios 或 $ bower install axios 2. 在 ...

  6. axios发送post请求后台接受不到问题

    axios发送post请求后台接受不到问题 1.首先这是前端的问题 2.解决方案不唯一,但这招肯定行 <!DOCTYPE html> <html> <head> & ...

  7. Python框架之Tornado(请求)

    概述 本篇就来详细介绍tornado服务器(socket服务端)是如何接收用户请求数据以及如果根据用户请求的URL处理并返回数据,也就是上图的3系列所有步骤,如上图[start]是一个死循环,其中利用 ...

  8. 使用Typescript重构axios(十六)——请求和响应数据配置化

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

  9. 使用Typescript重构axios(十八)——请求取消功能:总体思路

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

随机推荐

  1. Objective-C Block与函数指针比较

    相似点 1.函数指针和Block都可以实现回调的操作,声明上也很相似,实现上都可以看成是一个代码片段. 2.函数指针类型和Block类型都可以作为变量和函数参数的类型.(typedef定义别名之后,这 ...

  2. Golang学习:sublime text3配置golang环境

    最近导师让学习golang, 然后我就找了些有关golang的学习视频和网站. 昨天在电脑上下载了go tools, 之后在sublime上配置了golang的运行环境.By the way, 我的电 ...

  3. Java 环境下载设置

    本篇文章出处: http://www.cnblogs.com/xiaofeixiang/p/4085159.html 和 https://www.cnblogs.com/renqiqiang/p/68 ...

  4. vue 利用mockJs 模拟数据

    工作这几年一直用Java 开发,前端的技术自己也忘得差不多了(实际上自己也不怎么会),最近参与的项目是用VUE +  Element-ui + springboot 写的,由于需求没有定,先画一个de ...

  5. python学习笔记2_条件循环和其他语句

    一.条件循环和其他语句 1.print和import的更多信息. 1.1.使用逗号输出  //print() 打印多个表达式是可行的,用逗号隔开.       在脚本中,两个print语句想在一行输出 ...

  6. Centos7安装搜狗输入法.

    系统默认安装输入法管理器的是 ibus. 而搜狗使用 fcitx 1.以我们先要安装 fcitx和必要的软件包 yum -y install fcitx* yum -y install libQtWe ...

  7. 【转】Android Hook框架Xposed详解

    1 Introduction 1.1  概述 Xposed 是 GitHUB 上 rovo89 大大设计的一个针对 Android 平台的动态劫持项目,通过替换 /system/bin/app_pro ...

  8. ztree 为节点添加点击触发事件

    <SCRIPT type="text/javascript"> var setting = { data : { key : { title : "code& ...

  9. windows系统中给qt工程添加第三方库

    · TEMPLATE = app CONFIG += console c++11 CONFIG -= app_bundle CONFIG -= qt SOURCES += main.cpp LIBS ...

  10. open-vm-tools与VMware Tools

    安装VMware Tools经常会出现兼容性不好,系统之间复制文件失灵,并且安装时提示建议使用open-vm-tools,于是放弃vmware-tools的安装,尝试使用open-vm-tools o ...