2017-03-16 23 views
0

所以我試圖通過Django使用我的ElasticSearch api作爲視圖。查看訪問外部API(彈性搜索)

這是我的嘗試,它不工作。我不明白的錯誤,但URL實際上並不甚至會出現這使我想起我的視圖集中被打破

services.py

import json 
import requests 

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 

網址。 py

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

您應該花些時間閱讀關於Django Rest Framework的文檔。你不應該在視圖中使用get,你不應該使用渲染,你的代碼不會定義item_list ... – Linovia

+0

感謝提到文檔,我已經花了幾個小時閱讀它們而沒有得到這個工作。請提供答案。 – Ycon

回答

0

結構您的get_items方法返回一個值。

def get_items(id, title): 
    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 

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

仍然沒有成功。謝謝,但它仍然沒有顯示'elastic'作爲URL。 DRF甚至沒有列出它。我已更新我的OP以包含我的網址。 – Ycon

+0

是真正的觀點,與問題一起發佈? –

+0

我更新了我的OP-,這是我所有的實際代碼。 – Ycon