28

これに関する情報を見つけるのに苦労しています。おそらくそれは正しいアプローチではありません。http メソッド (GET または POST または DELETE または PUT) に基づいて、2 つの異なるビュー関数に要求をルーティングしたいと考えています。

通常、REST API で行われるように、これは同じ URL が HTTP メソッドに基づいて異なる意味を持つことを意味します。

django の urls.py ファイルでこれを行う方法がわかりません。次のようにしたいと思います。

url(r'^tasks$', 'app.views.get_tasks', method='get'),
url(r'^tasks$', 'app.views.create_task',  method='post'),

(注:私はdjango 1.4で作業しています)

4

3 に答える 3

27

URLに一連のロジックを追加せずにさまざまな関数でこれを行うことはできないと思いますが(これは決して良い考えではありません)、リクエストメソッドの関数内を確認できます:

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/です。

于 2013-09-30T14:15:03.127 に答える