fbpx
  1. HOME
  2. ブログ
  3. IT技術
  4. 【第3回:後編】Responderを使ってDjangoチュートリアルをやってみた【データベース操作編】

【第3回:後編】Responderを使ってDjangoチュートリアルをやってみた【データベース操作編】

はじめに~第3回:後編~

前回の記事の続きとなります。

Responderを使って「Djangoのチュートリアル」をやってみる

今回も、Responder(レスポンダー)を使って「Djangoのチュートリアル」をやってみたいと思います。

Django のチュートリアル「はじめての Django アプリ作成」を、Responderで追う形になりますので、多少内容が異なる部分がありますが、成果物はできるだけ同じモノになるよう作る予定です。

【はじめての Django アプリ作成】
https://docs.djangoproject.com/ja/2.2/intro/

第1回はこちら

データの変更(Change)

次は、変更機能の実装です。

先ほどの「Add」では、各テーブルごとに処理を書いていましたが、「Change」機能は、工夫して一つの関数でまとめてみましょう

そんな時に役立つのが、引数を持つルーティングです。

例えば、http://127.0.0.1:5042/change/question/1 なら「Questionテーブルでid=1のデータを変更する処理」

http://127.0.0.1:5042/change/choice/2 なら「Choiceテーブルでid=2のデータを変更する処理」

というようにhttp://127.0.0.1:5042/change/の後に記述するパスによって機能を変更できます。

Responderでは、 @api.route('/change/{teble}/{data_id}') のように { } を使ってルーティングします。

コード

実際にコーディングしてみると、以下のように書くことができます。

(少し強引な部分もありますが…)

このように、引数をもつルーティングでは、処理を行う関数の引数としても、それらを追加してあげます

getで受け取った時は、まずはログインチェック authorized() をして、最初にどのテーブルを扱うかをチェックし保持しておきます。

table = Question if table_name == 'question' else Choice

次に、そのテーブルから主キーとなるidと合致するデータを持ってきて、ビューに渡します

ビューの実装

ビューは、以下のように実装しました。

少し複雑ですが、もらった table_name と対象のデータ field をhtml内に展開しているだけです。

これで一気に、QuestionとChoiceの「Change」機能の実装が終わりました

実行

それでは、実際に動かしてみましょう!

(スクショ撮った後が右下に写っていますが気にしないでください)

うまく機能していそうですね!

データの削除(Delete)

では次に、「Delete」機能ですが、これはさっきの「Change」機能と大きな違いはありません。

とはいっても、多少、postの処理が違うのと、ビューも少し異なります

コードと、実際に動いている様子を見て理解した方が早そうです。

コード

実行

上のコードが実際に動いている様子は、以下のようになります。

問題なく動いているようです!

どれもシンプルなビューですが、凝りたい人は、こだわって作ってみるのも面白いと思います!

おわりに【第3回】

さて、今回は、ここまでになります。

今回の第3回でひとつの山場は越えたと思います。

難しい場所も多いので、一旦ここで立ち止まり、コードをしっかり読んで処理を理解する時間を設けても良いのではないでしょうか?

また、ここまでのコーディングが理解できると、いろいろな応用が効くようにもなるので、ぜひ遊んで見てください。

ちなみに、この記事で書いているコードで「ここはもっとこうしたら良いんじゃないか?」など見つけるのも面白いと思います。

さて、次回は「公開用のビュー」を作成していきます。

今までは、ずっと裏の実装をしていたので「Poll (投票)のアプリ」を作っていたことを忘れてしまいそうでしたが…(笑)

いよいよ形にしていくことになりますので、お楽しみに!

ディレクトリ構成

現在のディレクトリ構成も載せておきます。

 

一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!

当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。

また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!

なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。

ライトコードでは一緒に働いていただける方を募集しております!

採用情報はこちら

関連記事