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

标签 python django rest django-rest-framework

我是 Python Django 的新手 - 进一步回答我的问题。

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

urls.py

网址模式

 = [
    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 创建新类,您需要的是 View 集中的新操作。

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

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

检查 this question有关@detail_route 与@list_route 的更多信息

然后你可以通过请求movements/register

来调用它

关于python - 有没有更好的方法来创建 Django REST Web 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44167279/

相关文章:

Django,查询集中的实际月份

Django:如何强制翻译成模板内的给定语言?

spring - RestTemplate 已弃用的 DefaultUriTemplateHandler 的替代品是什么?

rest - 可选择在 Spring Data Rest 中禁用 HATEOAS 格式

python - 尝试在包含 np.nan 的列中查找平均值。仅获取浮点值时遇到问题

python - 注册和配置域名的最佳 API 是什么?

python - celery 与 Django - MaybeEncodingError : Error sending result

Django REST框架: Create/Update object using Related Field

python - 基于多索引求和列值

python - 更改记录查询中的隔离级别或关闭事务