gpt4 book ai didi

python - tasty pie - 返回带有非 ORM 对象的 JSON

转载 作者:行者123 更新时间:2023-12-05 08:09:25 25 4
gpt4 key购买 nike

我是 Tastypie 的新手,我想简单地从我的 API 返回一个 json 结构。

我有以下类(class):

class CaseResource(Resource):
class Meta:
authentication = SessionAuthentication()
resource_name = 'case'
allowed_methods = ['get']

def obj_get_list(self, request, **kwargs):
case = request.GET.get('q')
if case:
mycase = connect_and_retrieve_data(request, q)
return self.create_response(request, {'mycase': mycase})

connect_and_retrieve_data 是一种为非 ORM 对象返回 json_dump 的方法。

当我在 AJAX 中发送 GET 请求时,我收到以下响应:

NotImplementedError at /mydashboard/api/v1/case/
No exception message supplied

API 将我指向“将 Tastypie 与非 ORM 数据源结合使用”,尽管我希望能有一些不那么繁重的东西。

我想我必须覆盖所有方法:

  • detail_uri_kwargs
  • 获取对象列表
  • obj_get_list
  • obj_get
  • obj_create
  • 对象更新
  • obj_delete_list
  • 对象删除
  • 回滚

但这看起来很重。是否有其他方法或使用不同的方法?

预先感谢您的帮助,

最佳答案

对于单个请求,您可以不创建任何 RESTful 端点。如果您出于某种原因决定您的整个服务将是 100% RESTful,那么这将是不正确的。

但是,如果您正在寻找不太重要的东西,请尝试标准 Django View :

import json

from django.http import (HttpResponse,
HttpResponseNotAllowed, HttpResponseForbidden)
from django.views.decorators.csrf import csrf_exempt


@csrf_exempt
def connect_and_retrieve_data(request):
"""
Docstrings..
"""
if not request.user.is_authenticated():
return HttpResponseForbidden(json.dumps({'message': 'User must be authenticated'}),
content_type='application/json')
if request.method != 'GET':
return HttpResponseNotAllowed(permitted_methods=('GET',))

if request.GET.get('q'):
mycase = connect_and_retrieve_data(request, request.GET.get('q'))
mycase = json.loads(mycase)
return HttpResponse(
json.dumps({'mycase': mycase, 'success': True}),
content_type='application/json')
else:
return HttpResponse(
json.dumps({'message': 'Missing q param', 'success': False}),
content_type='application/json')

请注意,如果您在 RESTful API 中获得太多未记录和未测试的端点,您的项目可能很快就会失控。在某些时候,您可能会考虑 RESTful 以外的东西。但如果它不超过所有端点的 10% 并且描述得很好,你就没事了。

关于python - tasty pie - 返回带有非 ORM 对象的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37883990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com