私はViewSet
とrouter
を使用する方法をお見せしましょう:
defaultrouterによると、あなたのビューセットがクラスでビューを宣言する必要があります。
私は、ユーザーAPIについて例をあげて、次のようにご案内:
class UserViewSet(viewsets.ViewSet):
"""Userviewset
Restful Structure:
| URL style | HTTP Method | URL Nanme | Action Function |
|----------------|-------------|-------------|-----------------|
| /users | GET, POST | user-list | user_list |
| /users/<email> | GET, DELETE | user-detail | user_detail |
"""
# Router class variables
lookup_field = 'email'
lookup_value_regex = '[\w.%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}'
# Viewsets class variables
#queryset = User.objects.all()
def list(self, request):
"""GET - Show all users"""
print request.version
api_result = user_list.lists_all_users()
return Response(api_result)
def create(self, request):
"""POST - Add new user"""
api_result = user_list.create_new_user(request.data)
return Response(api_result)
def retrieve(self, request, email=None):
"""GET - Show <email> user"""
api_result = user_detail.retrieve_the_user(email)
return Response(api_result)
def partial_update(self, request, email=None):
return Response()
def destroy(self, request, email=None):
"""DETELE - Delete <email> user"""
api_result = user_detail.destroy_the_user(email)
return Response(api_result)
私は基本的な安らかなAPIを含むUserViewSetが終了したら、私はrouter
に登録:
router = routers.SimpleRouter(trailing_slash=False)
router.register(prefix=r'users', viewset=UserViewSet, base_name='user')
だから、そこになります対応するURLで生成する:
list
およびcreate
は、対応するURLである:/users
retrieve
、partial_update
とdestroy
は、対応するURLである: :/users/<email>
は、あなたがビューセットを展開するlist_route
またはdetail_route
を使用する必要があり、あなたがより多くのURLをカスタマイズ追加する必要があるとし
@list_route(methods=['post'])
def login(self, request):
"""POST - login by user"""
...
新しい操作は、対応するURLと一致します:
login
は、対応するURLである:/users/login
私はそれはあなたを助けることができると思います。
user_detailオブジェクトとuser_listオブジェクトの参照先を明確にできますか? –