1

私はdjango-tastypieが初めてです。ここに私の api.py コード、

from tastypie.resources import ModelResource
from .models import ListModel


class ListModelResource(ModelResource):

    def determine_format(self, request):
        return 'application/json'

    class Meta:
        allowed_methods = ['get','put']
        queryset = ListModel.objects.all()

ここでは、GET に CURL を使用しています。

curl http://127.0.0.1:8000/api/v1/listmodel/1/

OUT: {"completed": false, "id": 1, "resource_uri": "/api/v1/listmodel/1/", "title": "This is test"}

ここでは、PUT に CURL を使用しています。

 curl --dump-header - -H "Content-Type: application/json" '{"completed": false, "id": 1, "resource_uri": "/api/v1/listmodel/1/", "title": "This is test"}' http://127.0.0.1:8000/api/v1/listmodel/1/
HTTP/1.0 401 UNAUTHORIZED
Date: Wed, 04 Sep 2013 08:12:53 GMT
Server: WSGIServer/0.1 Python/2.7.2+
Content-Type: text/html; charset=utf-8

なぜ私は401を取得していますか?.

4

1 に答える 1

2

おいしいパイのチュートリアルによると:

... POST/PUT/DELETE をリソースに送信しようとすると、「401 Unauthorized」エラーが発生します。安全のため、Tastypie は、ReadOnlyAuthorization に設定された承認クラス (「何をすることが許可されているか」) で出荷されます。これにより、Web 上で安全に公開できますが、POST/PUT/DELETE を実行できなくなります。..

次を使用して有効にできますtastypie.authorization.Authorization

from tastypie.authorization import Authorization
from tastypie.resources import ModelResource
from .models import ListModel

class ListModelResource(ModelResource):
    def determine_format(self, request):
        return 'application/json'

    class Meta:
        allowed_methods = ['get','put']
        queryset = ListModel.objects.all()
        authorization= Authorization() # <---

警告

これは開発中のテストには最適ですが、非常に安全ではありません。このようなリソースをインターネット上に公開しないでください。Tastypieで利用可能な認証/承認クラスを確認してください。

于 2013-09-04T08:39:02.923 に答える