基于django的rest api快速开发(只提供一个接口服务)
2018-03-02 16:51
961 查看
需求:目前我们有一个后台的python脚本和前台的页面,我们需要提供一个类似tomcat的服务,来使前台的一个请求,通过我们搭建的服务去调用python模型,并最终将处理的结果返回给前台。
一:搭建django rest api 环境首先我们需要有python环境,这是基础,配置好python环境后就可以开始下面的操作了
# 创建虚拟环境文件夹mkdir tutorialcd tutorial# 创建虚拟环境(方便后期部署)并进入 需配置virtualenv环境
virtualenv env
linux:source env/bin/activate window:env\Scripts\activatedeactivate(退出虚拟环境)
# 安装Django和restframework框架pip install django
pip install djangorestframework
# 创建一个项目并进入项目创建appdjango-admin.py startproject tutorial cd tutorial
django-admin.py startapp snippets
到此我们的服务搭建完成,我们的目录是这样的
然后我们开始我们的工作
1: 设置settings,将rest接口和app加入INSTALLED_apps中
2:编写turorial的urls.py
from django.conf.urls import url, include
urlpatterns = [
url(r'^', include('snippets.urls')),
]3:在app snippets新建一个urls.py文件并加入以下内容
from django.conf.urls import url
from rest_framework.urlpatterns import format_suffix_patterns
from snippets import views
urlpatterns = [
url(r'^snippets$', views.test1),
]
urlpatterns = format_suffix_patterns(urlpatterns):44:编写app snippets的view文件
from django.shortcuts import HttpResponse
from django.views.decorators.csrf import csrf_exempt
# 配置页面的缓存
from search.search import Search
import os
import time
s_app = Search()
corpus = s_app.read_corpus()
s_app.train(corpus)
@csrf_exempt
# @cache_page(60*15)
def test1(request):
"""
List all code snippets, or create a new snippet.
"""
request.body.decode('utf-8')
global s_app
try:
searchStr = str(request.GET.get('searchStr'))
type = int(request.GET.get('type'))
count = int(request.GET.get('count'))
js = s_app.search(searchStr, topK=count, by=0, type=type)
except Exception as e:
js = "[{'info':" + e.__doc__ + "}]"
return HttpResponse(js, content_type='application/json;charset=utf-8');
至此,我们的一个基于django rest api框架搭建的简单服务就完成了
最后我们只需要跑起服务就行了
python manane.py runserver 0.0.0.0:port
http://localhost:5600/snippets?searchStr=a&type=1&count=3
跨域问题解决方式
1.安装django-cors-headers
pip install django-cors-headers1
2.配置settings.py文件
INSTALLED_APPS = [ ... 'corsheaders', ... ] MIDDLEWARE_CLASSES = ( ... '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', )
相关文章推荐
- REST接口提供服务的一个小脚本
- saltstack的rest接口salt-api开发―基于flask-restful
- RestExpress 一个基于Netty的轻量级Rest服务开发框架
- AgileRepository - 一个基于接口的Repository快速开发库
- 云和移动开发风气云涌,Autodesk的一些云应用提供REST API做基于云的二次开发
- ADO.NET 4 快速上手(11)——WCF Data Service提供基于REST的服务(完)
- 通过beego快速创建一个Restful风格API项目及API文档自动化 本文演示如何快速(一分钟内,不写一行代码)的根据数据库及表创建一个Restful风格的API项目,及提供便于在线测试API的界
- 开发基于接口的 .net web 服务
- Jersey—— 一个基于Rest风格的Web Service开发框架
- 使用Django REST Framework来快速实现API调用服务——下篇(编写API服务)
- 后台接口平台 基于Laravel 开发 快速开发数据接口
- [ZooKeeper.net] 1 模仿dubbo实现一个简要的http服务的注册 基于webapi
- 使用electron开发一个h5的客户端应用创建http服务模拟后台接口mock
- 基于Spring开发的DUBBO服务接口测试
- 快速开发09之归属地查询——系统提供的抖动 振动服务
- 即时通讯开发之调用API接口快速在IOS平台的即时通讯应用开发
- Nginx 模块自主开发十: 设计一个基于NGINX 的缓存服务
- 快递单号跟踪借口 API免费接口 各种提供JSON格式数据返回服务网站的API接口
- 使用 Visual FoxPro提供一个基于互联网的数据服务