2017-05-24 104 views
1

我是Python Django的新手 - 對我的問題更進一步。有沒有更好的方法來創建Django REST Web服務?

我創建一個REST Web服務,但我總是不滿意我的代碼,但我找不到更好的解決方案。是否真的有必要爲每個新的URL部分創建新的類?如果不是,我怎麼找到解決這個問題的更好方法?

urls.py

urlpatterns的

= [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^movement/$', views.MovementDirection.as_view()), 
    url(r'^movement/on/$', views.On.as_view()), 
    url(r'^movement/off/$', views.Off.as_view()), 
    url(r'^movement/stop/$', views.Stop.as_view()), 
    url(r'^movement/forward/$', views.Forward.as_view()), 
    url(r'^movement/backwards/$', views.Backward.as_view()), 
] 

urlpatterns = format_suffix_patterns(urlpatterns) 

views.py

... 
#movement/forward 
class Forward(APIView): 
    def get(self, request): 
     print("FORWARD") 
     # engine control 
     return Response("Forward") 

#movement/backwards 
class Backward(APIView): 
    def get(self, request): 
     print("BACKWARD") 
     # engine control 
     return Response("Backward") 
... 

回答

5

不,你不必創建一個新的類新的URL,什麼您需要的是您的視圖中的新操作。

url(r'^movements/$', views.MovementDirection.as_view()), 

views.py

class MovementDirection(ModelViewSet): # please notice the class 
    @list_route 
    def register(self, request): 
     # you can make it on a whole endpoint 
     # or on a single instance by using @detail_route 

檢查this question對@detail_route VS @list_route更多信息

然後,你可以通過一個請求調用它來movements/register

+0

感謝您非常快速回復,出錯的問題,並使我轉向以下問題:我得到一個錯誤,以將'urls.py'條目更改爲'url(r'^ movements /',views.MovementDirection.as_view({'get' :'on'})),'並刪除註釋。該annotaiton錯誤是'NameError:name'list_route'未定義'。另一個錯誤是TypeError:在ViewSet上調用'.as_view()'時必須提供'actions'參數。例如'.as_view({'get':'list'})' –

+0

我只想了解錯誤的原因。 –

+0

註釋錯誤 - > checked;) - >導入丟失 –

相關問題