没有模型的 django-tastypie 用法
django-tastypie usage without model
我需要通过 AJAX 向后端 python 函数请求 POST 数据(该数据将使用第三方 python 脚本进行处理)并使用结果在前端。目前我正在为 API 使用 django-tastypie(我只为我的模型使用 ModelResource)。据我了解,我可以使用 Resource 来实现此行为,但我有点困惑,因为我不想保存或存储任何数据,我只想在后端处理它。我应该使用 django-tastypie 还是选择其他方法更好?
你可以用 prepend_urls
来做这个
prepend_urls -> 用于添加您自己的 URL 或在默认 URL 之前匹配的挂钩。对于添加自定义端点或覆盖内置端点很有用。 Tastypie docs link
见下方代码
class YourModelResource(ModelResource):
class Meta:
queryset = YourModel.objects.all()
resource_name = 'your_model'
def prepend_urls(self):
return [
url(r"^(?P<resource_name>%s)/do_some_work%s$" % (self._meta.resource_name, trailing_slash()), self.wrap_view('do_some_work'), name="api_do_some_work"),
]
def do_some_work(self, request, **kwargs):
self.method_check(request, allowed=['post'])
self.is_authenticated(request)
#Call the script and get the results
results = []
result_list = {
'results': results,
}
return self.create_response(request, result_list)
此处 prepend_urls
方法被覆盖以调用嵌套资源 do_some_work
。此调用的 URI 将如下所示
/api/v1/your_model/do_some_work/
如果您必须使用 Tastypie,建议使用上述方法,否则明智的 Django 视图将是这种情况下的最佳选择。
我需要通过 AJAX 向后端 python 函数请求 POST 数据(该数据将使用第三方 python 脚本进行处理)并使用结果在前端。目前我正在为 API 使用 django-tastypie(我只为我的模型使用 ModelResource)。据我了解,我可以使用 Resource 来实现此行为,但我有点困惑,因为我不想保存或存储任何数据,我只想在后端处理它。我应该使用 django-tastypie 还是选择其他方法更好?
你可以用 prepend_urls
来做这个
prepend_urls -> 用于添加您自己的 URL 或在默认 URL 之前匹配的挂钩。对于添加自定义端点或覆盖内置端点很有用。 Tastypie docs link
见下方代码
class YourModelResource(ModelResource):
class Meta:
queryset = YourModel.objects.all()
resource_name = 'your_model'
def prepend_urls(self):
return [
url(r"^(?P<resource_name>%s)/do_some_work%s$" % (self._meta.resource_name, trailing_slash()), self.wrap_view('do_some_work'), name="api_do_some_work"),
]
def do_some_work(self, request, **kwargs):
self.method_check(request, allowed=['post'])
self.is_authenticated(request)
#Call the script and get the results
results = []
result_list = {
'results': results,
}
return self.create_response(request, result_list)
此处 prepend_urls
方法被覆盖以调用嵌套资源 do_some_work
。此调用的 URI 将如下所示
/api/v1/your_model/do_some_work/
如果您必须使用 Tastypie,建议使用上述方法,否则明智的 Django 视图将是这种情况下的最佳选择。