Search by

    Django REST Frameworkのチュートリアル(QuickStart)をやってみた

    Django REST Frameworkの公式チュートリアル(Quickstart)をやってみた時の不明点、気付きをまとめておく。

    アプリを作成するディレクトリが変

    It may look unusual that the application has been created within the project directory. Using the project's namespace avoids name clashes with external modules (a topic that goes outside the scope of the quickstart).

    「詳細は省くけど、名前の衝突を避けるためにこうするんやで」って書いてあるけど、どういうこと?

    HyperlinkedModelSerializerを継承してシリアライザを作成する

    Notice that we're using hyperlinked relations in this case with HyperlinkedModelSerializer. You can also use primary key and various other relationships, but hyperlinking is good RESTful design.

    「hyperlinked relationsを使っていることに留意してね、RESTful designで作るのにgoodだよ」ってアドバイスしてくれるけど、どんな風に良さそうなのか想像出来ない。

    ViewSetとは

    Rather than write multiple views we're grouping together all the common behavior into classes called ViewSets

    「共通した振る舞いをクラスにまとめている、これをViewSetと呼びます」とのことだが、共通した振る舞いとは具体的に何を指しているのかな?

    Routerとは

    Because we're using viewsets instead of views, we can automatically generate the URL conf for our API, by simply registering the viewsets with a router class

    urls.py
    router = routers.DefaultRouter()
    router.register(r'users', views.UserViewSet)
    router.register(r'groups', views.GroupViewSet)

    「viewsetを登録したrouterクラスを使うことで、自動的にURLconfを生成出来る」らしい。

    djangoでクラスベースViewを使うと、一つのURLに対して getの場合こう、postの場合はこう、と言った書き方が出来るようになるけど、ここでは複数のurlに対して、一つのViewsetが紐付くようなイメージになるのかな。

    必要に応じて、明示的にconfを書くことも出来るらしい。

    apiを呼んでみる

    curlやブラウザからのアクセスで実際にapiが値を返すことが確認出来る。 因みに公式には記載がありませんでしたが、DEBUG=Flaseにして、ALOWED_HOSTにローカルホスト入れないとcurlはできなかった。

    …結局雰囲気しかわからない。 クイックスタートなので仕方ないのかな。

    まとめ(なんとなくわかったこと)

    • シリアライザを使ってモデルのデータとかをシリアライズできる。
    • ViewにはViewSetなるもので、クラスを用意してあげる。
    • routerを使い、自動でurlconfを生成する。
    • apiはcurlやブラウザで動作確認する。

    チュートリアルに進んで詳細確認しよ。

    次の記事