python接收axios的post请求,并处理后返回数据

时间:2022-09-25 07:53:58

公司的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即可,时间有限,下次再写。