gpt4 book ai didi

python - 如何在 tastypie django 中记录所有请求

转载 作者:太空宇宙 更新时间:2023-11-03 16:03:14 24 4
gpt4 key购买 nike

我在 django 中使用了 tastypie 来处理 REST api 请求。当我执行 GET/POST 请求时,默认情况下会采用脱水方法。但是对于 DELETE/PUT 请求,tastypie 没有任何方法来处理它,因此无法记录请求信息。

class ProjectResource(ModelResource):
allowed_methods = ['get', 'put', 'post', 'delete']
resource_name = 'project'
queryset = Project.objects.all()
validation = FormValidation(form_class=ProjectForm)
always_return_data = True
filtering = {
'id': ALL,
'slug': ALL,
}

def dehydrate(self, bundle):
import pdb;pdb.set_trace() #--> get/post request hit this function
logger.log('app.main','debug', 'Project info', bundle)
bundle.data['name'] = cgi.escape(bundle.obj.name)
return bundle

是否有任何函数可以覆盖 tastypie.resource 模块中的 ModelResource ?因此,对于所有请求,我首先获取捆绑数据,然后在处理之前将其传递给记录器。

最佳答案

有点晚了,但如果您能描述目的是什么,可能会更容易为您指明正确的方向。

您说您想记录请求信息,但将包记录在 dehydrate 中方法不会执行此操作,因为任何更改(例如在 POST 上添加主键)请求已经完成。

您最好记录 request.body直接在 dispatch方法。

如果您确实想记录响应,您也可以在 dispatch 中执行此操作。方法。

def dispatch(self, request_type, request, **kwargs):
logger.info('Project info [request method]: %s' % request.method)
logger.info('Project info [request]: %s' % request.body)
response = super(ClassName, self).dispatch(request_type, request, **kwargs)
logger.info('Project info [response status]: %d' % response.status_code)
logger.info('Project info [response]: %s' % response.content)
return response

关于python - 如何在 tastypie django 中记录所有请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40109368/

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