用于访问外部API的视图集(弹性搜索)

时间:2017-03-16 07:24:40

标签: django django-rest-framework

所以我试图通过Django将我的ElasticSearch api用作视图集。

这是我的尝试,但不起作用。我没有收到错误,但实际上甚至没有显示URL,这让我认为我的视图集已经破坏了

services.py     导入json     导入请求

def get_items(id, title):
    url = 'http://localhost:9200/_search' 
    params = json.loads(request.GET.body)
    r = requests.get('http://localhost:9200/_search', params=params)
    items = r.json()
    return items['results']

views.py

import services

class ElasticViewSet(viewsets.ViewSet):
    def list(self,request):
        item_list = get_items()
        return item_list
        pass

urls.py

from api.views import ElasticViewSet
router.register(r'elastic', ElasticViewSet, base_name='Elastic')

1 个答案:

答案 0 :(得分:0)

构建get_items方法以返回值。

import json
import requests

def get_items(request):
    url = 'http://localhost:9200/_search' 
    params = json.loads(request.body)
    r = requests.get('http://localhost:9200/_search', params=params)
    items = r.json()
    return items['results'] # handle exceptions for fail proof design

并在您的视图中调用方法get_items, 至于裸骨,你可以做到这一点。

from rest_framework.response import Response
from rest_framework import viewsets

class ElasticViewSet(viewsets.ViewSet):
    def list(self, request):
        item_list = get_items(request)
        return Response(data=item_list)