基于django的rest api快速开发(只提供一个接口服务)

需求:目前我们有一个后台的python脚本和前台的页面,我们需要提供一个类似tomcat的服务,来使前台的一个请求,通过我们搭建的服务去调用python模型,并最终将处理的结果返回给前台。

一:搭建django rest api 环境

首先我们需要有python环境,这是基础,配置好python环境后就可以开始下面的操作了

# 创建虚拟环境文件夹mkdir tutorialcd tutorial# 创建虚拟环境(方便后期部署)并进入  需配置virtualenv环境

virtualenv env

linux:source env/bin/activate window:env\Scripts\activate

deactivate(退出虚拟环境)

# 安装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):4

4:编写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',
)



  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值