【发布时间】:2025-12-27 07:30:17
【问题描述】:
POST 到 URL 与 GET、DELETE 或 PUT 不同。这些行动是根本不同的。然而,Django 似乎在其调度机制中忽略了它们。基本上,人们要么完全忽略 HTTP 动词,要么在每个视图上都这样做:
def my_view(request, arg1, arg2):
if request.method == 'GET':
return get_view(request, arg1, arg2)
if request.method == 'POST':
return post_view(request, arg1, arg2)
return http.HttpResponseNotAllowed(['GET', 'POST'])
我在网络上找到的几个解决方案(this snippet 用于基于动词的调度,或this decorator 用于动词要求)不是很优雅,因为它们显然只是解决方法。
CherryPy 的情况似乎是一样的。我所知道的唯一能做到这一点的框架是 web.py 和 Google App Engine 的。
我认为这是 Web 框架的严重设计缺陷。有人同意吗?还是基于我忽略的原因/要求而深思熟虑的决定?
【问题讨论】:
标签: python django rest cherrypy web-frameworks