django urlpatterns中如何基于HTTP方法进行区分
我在查找有关此信息时遇到一些困难,这可能不是正确的方法。我想基于http方法(GET或POST或DELETE或PUT)将请求路由到两个不同的视图函数。
正如通常在REST API中所做的那样,这意味着基于HTTP方法,相同的URL具有不同的含义。
我在django的urls.py文件中看不到做到这一点的方法,我想要这样的东西:
url(r'^tasks$', 'app.views.get_tasks', method='get'),
url(r'^tasks$', 'app.views.create_task', method='post'),
(注意:我正在使用django 1.4)
-
我认为您可以在不向URL添加一堆逻辑的情况下使用不同的函数来完成此操作(这从来都不是个好主意),但是您可以在函数中检查request方法:
def myview(request): if request.method == 'GET': # Code for GET requests elif request.method == 'POST': # Code for POST requests
您还可以切换到基于类的视图。然后,您只需要为每个HTTP方法定义一个方法:
class CreateMyModelView(CreateView): def get(self, request, *args, **kwargs): # Code for GET requests def post(self, request, *args, **kwargs): # Code for POST requests
如果您决定采用基于课程的路线,那么另一个不错的资源是http://ccbv.co.uk/。