有没有更好的方法来创建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
感谢您非常快速回复,出错的问题,并使我转向以下问题:我得到一个错误,以将'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'})' –
我只想了解错误的原因。 –
注释错误 - > checked;) - >导入丢失 –