2015-09-04 61 views
0

我需要通过AJAX请求POST数据到后端python函数(该数据将使用第三方python脚本处理)并在前端使用结果。目前,我正在使用django-tastypie API(我仅为模型使用ModelResource)。据我所知,我可以使用资源来实现这种行为,但我有点困惑,因为我不想保存或存储任何数据,我只是想在后端处理它。我应该使用django-tastypie还是选择另一种方法更好?django-tastypie usage without model

+0

你是说你把你的ajax发布到tastypie资源终结点?你只使用django视图还是只使用tastypie? –

+0

@ShangWang我有django的意见和tastypie api。我不知道如何做得更好。 – svfat

+1

如果你对tastypie不太熟悉,我认为把你的ajax数据发布到django视图就足够简单了。如果你不确定,有很多例子可以告诉你如何做到这一点。 –

回答

1

您可以使用prepend_urls这个

prepend_urls - >钩为默认网址前加上自己的网址或匹配。用于添加自定义端点或覆盖内置的端点。 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的意见将是这种情况下最好的选择。

+0

非常感谢! – svfat