2015-09-04 66 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