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

2024-05-04 08:40:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python Django还不熟悉-进一步问我的问题。你知道吗

我创建了一个restweb服务,但是我对我的代码非常不满意,但是我找不到更好的解决方案。真的有必要为每个新的URL部分创建新的类吗?如果没有,我如何才能找到一个更好的方法来解决这个问题?你知道吗

网址.py

URL模式

 = [
    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)

视图.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")
...

Tags: pyviewurladminasviewsclassforward
1条回答
网友
1楼 · 发布于 2024-05-04 08:40:44

不,你不必为一个新的url创建一个新类,你需要的是在你的视图集中有一个新的动作。你知道吗

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

你知道吗视图.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

有关@detail\u route和@list\u route的更多信息,请查看this question

然后您可以通过请求movements/register来调用它

相关问题 更多 >