我有數據的JSON文件這樣:創建一個Django的休息API爲我的Python腳本
['dbname' : 'A', 'collection' : 'ACollection', 'fields' : ['name', 'phone_no', 'address']}
['dbname' : 'B', 'collection' : 'BCollection', 'fields' : ['name', 'phone_no', 'address', 'class']}
這些是2個例子當中相同格式的多部辭書。
我有一個python代碼,執行以下操作:接受來自用戶的2個輸入 - phone_no和dbname。例如,用戶將phone_no輸入爲xxxxxxxxxx,將dbname輸入爲A.然後,python代碼讀取JSON文件,並將用戶輸入與具有數據庫名稱的詞典元素匹配爲「A」。然後打開數據庫'A',打開相應的集合'ACollection'並打印集合中phone_no值爲xxxxxxxxxx的帖子的相應字段。數據庫是用mongoDB實現的。
我需要爲此代碼構建一個django rest api。最終目標是從瀏覽器訪問代碼。用戶在瀏覽器中提供2個輸入,並執行代碼,返回瀏覽器上顯示的數據。我已經瀏覽了django-rest框架文檔,但我對這個概念很陌生,希望得到一些指導。
如何實現這些功能並創建API?模型,序列化器,視圖和URL文件與我的程序有什麼關係?
models.py
from django.db import models
class App(object):
def __init__(self, phone_no, name, address, categories):
self.phone_no = phone_no
self.name = name
self.address = address
self.categories = categories
這就是我的工作,到目前爲止,上手。但問題是,模型類應該基本上是動態的。例如:如果'A'是數據庫,程序返回3個字段,但如果'B'是數據庫,程序返回4個值,所以我不確定模型類是什麼樣的。
views.py
from django.views.decorators.csrf import csrf_exempt
from rest_framework.decorators import api_view
from rest_framework.response import Response
from pymongo import Connection
from models import App
from serializers import AppSerializer
import json
import pymongo
from os import listdir
import re
from django import forms
@csrf_exempt
@api_view(['GET'])
def pgs(request):
#connect to our local mongodb
db = Connection('localhost',27017)
#get a connection to our database
dbconn = db.general
dbCollection = dbconn['data']
if request.method == 'GET':
#get our collection
items = []
for r in dbCollection.find():
post = App(r["phone_no"],r["name"],r["address"],r["categories"])
items.append(post)
serializedList = AppSerializer(items, many=True)
return Response(serializedList.data)
您對數據模型有任何初始代碼嗎?這可能是一個開始的好地方,可以得到更具體的問題。 – dylrei 2015-02-23 23:02:20
到目前爲止,我有一個基本的API設置,僅從數據庫中檢索數據並顯示它。我試圖找出如何在瀏覽器中獲取用戶的phone_no輸入,並用它來查詢數據庫中的帖子。 – user3799658 2015-02-23 23:13:22
太棒了。如果你有一個數據庫,你至少有一個數據模型的開始。你有沒有Django模型類,或者它仍然只是一個數據庫模式?無論哪種方式,讓我們先看看。 – dylrei 2015-02-24 00:00:56