Skip to content

Instantly share code, notes, and snippets.

@ftnext
Created May 6, 2019 15:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ftnext/81ddb39b3c07dc878babb30d91718b6e to your computer and use it in GitHub Desktop.
Save ftnext/81ddb39b3c07dc878babb30d91718b6e to your computer and use it in GitHub Desktop.
Django Congress 2019 トーク アウトライン(暫定版)

Django Girls Blogのネクストステップ 〜実務レベルへ橋渡し〜

Django Congress 2019 トーク

対象者

  • Djangoを始めてみた方
  • Django Girls Tutorialや投票アプリチュートリアルを最後までやってみた方
  • Django Girls Tutorialや投票アプリチュートリアルと自分の作りたいアプリとの間にギャップを感じている方

別途リポジトリを用意。ソースは追えるように (ソースコードを貼るだけでもいいので、チュートリアル化もしたい)

アウトライン

  • はじめに(5分)
  • Django Girls Tutorial クイックツアー(10分)
  • ユーザまわりを実装(10分)
  • この機能、どう作る?(10分)
  • まとめ(5分)
  • 質疑(5分)

はじめに

  • 自己紹介
  • 問題意識の共有(なぜこのトークをしようと思ったか)
    • 実務で使うDjangoのコードはチュートリアルとのギャップを感じさせる
    • 複数のアプリからなるプロジェクト
    • 「settings.pyどこ?」(チュートリアルと全然違う)
  • 「実務レベル」を定義:
    • 作りたいアプリが作れる(個人開発できる)
    • 実務でDjangoを使った経験はない
  • トークを聞いたあとの姿
    • チュートリアルで扱っていない機能をDjangoで実現し用途思ったときに調べ方が浮かぶ
    • GitHubにあるDjangoのコードが読める
    • ギャップ(チュートリアルで説明が薄いDjangoの機能)が可視化される(→埋める情報発信をしようという方が出てきたら感無量)

Django Girls Tutorial クイックツアー

  • 出発点を合わせるためのパート
  • 投票アプリチュートリアルなどの知見を取り入れながらDjango Girls Blogを再構築
    • django-admin startproject configでプロジェクト作成
    • URLの名前空間、など
  • Extensionsのログインまで進める(コメントはスキップ)
  • ここまでで作れるアプリと一般のWebアプリの間のギャップ:ユーザ
  • 次へ進むためにsettings.pyを分割する

ユーザまわりを実装

読者としてログインできる機能を追加する

  • ユーザ登録、パスワード変更、パスワードリセット、全て用意されている(django.contrib.auth.views
  • 前提知識:クラスベースビュー
    • post_newかpost_editをクラスベースビューで書き直す
  • クラスベース汎用ビューの紹介(一連の処理が用意されている。必要に応じて上書きして使う)
  • ユーザ登録する
    • Bootstrap4のクラスを当てるためにforms.pyで継承
  • パスワード変更、リセットは薄く説明
  • ユーザの認証(Emailでログインしたい)
    • 2018 c-bataさんトークを参考に
  • 権限の設定(ユーザが記事を書けてしまうので)
    • グループを割り当てて見せなくする

この機能、どう作る?

Webアプリでよく見るが、Djangoのチュートリアルでは扱われていない機能の実現の仕方を紹介

  • いいね機能(ユーザごとのブックマーク)
  • ManyToManyリレーションシップ(記事のカテゴリ)
  • 一覧画面のページネーション
  • 一覧画面の検索(カスタムタグ、カスタムフィルタ)
  • 画像の扱い(MEDIA_ROOTなど)

(全ては扱えなさそうなので、チュートリアルとのギャップが大きい機能から取り上げる)

まとめ

  • 扱ったトピック(=ギャップ)を振り返り
    • フォルダ構造
    • ユーザ
    • クラスベースビュー
    • etc
  • このトークでもDjangoは網羅できない→トーク準備プロセスをメタにとらえる
  • Djangoを使うための情報源(どう調べたかの共有)
    • 公式ドキュメントの中を検索
    • Djangoの情報発信ブログ
    • 各種書籍が出るのでギャップは埋まりそう

今回のトークで扱えないこと

  • テスト
  • jQuery
  • PythonAnywhereやHeroku以外へのデプロイ
  • Docker
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment