有没有更好的方法来创建Django REST Web服务?

问题描述:

我是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") 
... 

不,你不必创建一个新的类新的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;) - >导入丢失 –