您的位置:首页 > 编程语言 > Go语言

基于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-headers
1

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',
)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  django rest framework
相关文章推荐