django urlpatterns中如何基于HTTP方法进行区分

发布于 2021-01-29 15:24:09

我在查找有关此信息时遇到一些困难,这可能不是正确的方法。我想基于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)

关注者
0
被浏览
49
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    我认为您可以在不向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/



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看