1 00:00:00,000 --> 00:00:00,499 2 00:00:00,499 --> 00:00:03,227 [音楽再生] 3 00:00:03,227 --> 00:00:04,705 4 00:00:04,705 --> 00:00:05,830 エズラZIGMOND:こんにちは、誰もが。 5 00:00:05,830 --> 00:00:08,020 今日出てきてくれてありがとう。 6 00:00:08,020 --> 00:00:10,660 このセミナーでは、「Pythonのです Webがフラスコであるアプリです。」 7 00:00:10,660 --> 00:00:14,510 >> だから、私は話をするつもりです 理由について少し 8 00:00:14,510 --> 00:00:17,400 あなたが作るためにフラスコを使用することもできます 対照的に、ウェブは、Pythonを使ってアプリ 9 00:00:17,400 --> 00:00:21,556 そこにいくつかの他のフレームワークのように 最もよく知られているジャンゴ、。 10 00:00:21,556 --> 00:00:24,330 サブタイトルは "と 何かあるピーウィー、 " 11 00:00:24,330 --> 00:00:27,250 私たちはどのようにについて話をするつもりです SQLデータベースと対話します。 12 00:00:27,250 --> 00:00:29,610 それは本当に素敵になります。 13 00:00:29,610 --> 00:00:32,390 >> だから、ここだけで簡単に説明です 私はオーバーに行きたいものの。 14 00:00:32,390 --> 00:00:35,520 そこで、まず、一つだけのスライド それは、クイックスタートになるだろう 15 00:00:35,520 --> 00:00:38,530 これは、すべてを取得する方法です お使いのコンピュータに設定します。 16 00:00:38,530 --> 00:00:41,760 私が実証するつもりです この私のローカルのMacマシン上で、 17 00:00:41,760 --> 00:00:45,220 それはちょうどので、私はこれをやったところ 前、私は、それを最も快適です 18 00:00:45,220 --> 00:00:48,510 しかし、これは間違いです CD50 IDE上で可能。 19 00:00:48,510 --> 00:00:52,050 >> だから、その後、私がしたいです フラスコが何であるかを紹介し、 20 00:00:52,050 --> 00:00:55,089 そしてなぜあなたがすべきあなたを納得させます 最初の場所でそれを使用します。 21 00:00:55,089 --> 00:00:56,880 それから、私は迅速をあげます 何の例 22 00:00:56,880 --> 00:01:00,550 フラスコ、簡単な例で行うことができます あなたはおちびさんに何ができるかの、 23 00:01:00,550 --> 00:01:05,010 そして私はあなたより多くが表示されます 完全なアプリケーション例 24 00:01:05,010 --> 00:01:07,520 私たちことを一緒に入れていること 一緒に歩くことができます。 25 00:01:07,520 --> 00:01:10,040 >> そして最後に、中 私が持っている最後のスライド、 26 00:01:10,040 --> 00:01:12,730 あなたが見て、いくつかのリソース 詳細については、オンラインで。 27 00:01:12,730 --> 00:01:15,560 これは完全ではありません フラスコを使用する方法のチュートリアル。 28 00:01:15,560 --> 00:01:18,140 そして、私は残すことを願っています 質問のためのいくつかの時間。 29 00:01:18,140 --> 00:01:21,050 誰もがちょうど、ローカルで見て 以下のように、途中で叫びます 30 00:01:21,050 --> 00:01:22,340 ご質問がある場合。 31 00:01:22,340 --> 00:01:27,150 >> だから、クイックインストールのもの、 あなたが一緒にフォローしたい場合は、 32 00:01:27,150 --> 00:01:29,240 またはあなたはこれを取得したい場合 自分のマシン上のアップ、 33 00:01:29,240 --> 00:01:32,440 私は、Python 2.7.10を使用するつもりです。 34 00:01:32,440 --> 00:01:35,860 フラスコに動作しません Pythonの3が、私は好きです 35 00:01:35,860 --> 00:01:38,660 そこだから、Pythonの2を使用して そのいくつかのPythonパッケージ 36 00:01:38,660 --> 00:01:40,910 まだ3では動作しません。 37 00:01:40,910 --> 00:01:44,800 あなたがピップインストールしている場合、どの Pythonのパッケージマネージャであり、 38 00:01:44,800 --> 00:01:48,190 あなたのPythonがある場合、私は思います 以上2.7.9に等しく、 39 00:01:48,190 --> 00:01:52,220 あなたはそれがすでにインストールされている、それはです これらのパッケージをインストールするには超簡単。 40 00:01:52,220 --> 00:01:54,990 >> あなたがインストールピップを行うことができます フラスコ、ピーウィーをインストールピップ、 41 00:01:54,990 --> 00:01:58,600 通常、あなただけのsudoを実行する必要があります 許可が出て動作するように。 42 00:01:58,600 --> 00:02:01,080 そして、あなたが使用している場合、 スーパーのPythonの古いバージョン、 43 00:02:01,080 --> 00:02:05,100 私は、あなたのPythonを更新することをお勧め またはピップをインストールするには、EasyInstallを使用。 44 00:02:05,100 --> 00:02:09,180 45 00:02:09,180 --> 00:02:11,120 そこで、次の質問は、フラスコは何ですか? 46 00:02:11,120 --> 00:02:13,280 そして、私は最初に、推測します 私は疑問に思いました合理的な質問 47 00:02:13,280 --> 00:02:15,585 長い時間があるため、Webアプリは何ですか? 48 00:02:15,585 --> 00:02:17,960 そのためには私が言葉です たくさんの周りに投げていると思います 49 00:02:17,960 --> 00:02:19,240 私は本当に知らなかったこと。 50 00:02:19,240 --> 00:02:22,340 そして、私は最高のことを考えます Webアプリが何であるかの例、 51 00:02:22,340 --> 00:02:26,960 本当にCS50ファイナンスであり、 それは、本当にただのウェブサイトではありません 52 00:02:26,960 --> 00:02:29,320 それはあなたのものです ソートのと相互作用することができます。 53 00:02:29,320 --> 00:02:31,736 ユーザーアカウントがありますし、 異なるあらゆる種類のもの。 54 00:02:31,736 --> 00:02:35,010 だから、場所を正確にあなたが描きます ウェブサイトであるものとの間のライン、 55 00:02:35,010 --> 00:02:38,780 ウェブアプリは、どのようなのです 任意ですが、私は考えを推測します、 56 00:02:38,780 --> 00:02:42,110 それはウェブサイト以上の何かです それは便利なアプリケーションです。 57 00:02:42,110 --> 00:02:46,081 >> だから、フラスコをするためのフレームワークです Pythonを使ってWebアプリを作ります。 58 00:02:46,081 --> 00:02:48,330 うまくいけば、年末までに このことから、私はあなたを説得します 59 00:02:48,330 --> 00:02:52,210 あなたが実際に何かを書くことができること 私はPythonを使用してCS50ファイナンスなど 60 00:02:52,210 --> 00:02:53,950 個人的には、PHPより多くの方のように。 61 00:02:53,950 --> 00:02:57,320 >> だから、フラスコは、彼らが呼びます マイクロフレーム、これにより、 62 00:02:57,320 --> 00:02:59,800 彼らはそれが非常に意味です シンプルですが拡張可能。 63 00:02:59,800 --> 00:03:02,980 だから、それはあなたが必要なものだけ持って、 しかし、あなたはより多くの機能が必要な場合は、 64 00:03:02,980 --> 00:03:04,522 それはそれらをもたらすために簡単です。 65 00:03:04,522 --> 00:03:06,480 しかし、それはちょうどので、 マイクロフレームは、しません 66 00:03:06,480 --> 00:03:08,960 それは小さなプロジェクトのためだけだということを意味します。 67 00:03:08,960 --> 00:03:12,590 私が言うここにリンクを持っています オバマ氏は2012年にフラスコを使用したこと 68 00:03:12,590 --> 00:03:14,410 彼のキャンペーンのための ウェブサイト、うまくいけば、 69 00:03:14,410 --> 00:03:16,937 裏書のようなものです。 70 00:03:16,937 --> 00:03:18,770 しかし、私の事を 本当にフラスコについては好き 71 00:03:18,770 --> 00:03:22,401 それは本当にありません、ということです あなたのための意思決定の任意の並べ替え。 72 00:03:22,401 --> 00:03:24,150 我々はしているという理由だけで Webアプリの話、 73 00:03:24,150 --> 00:03:26,940 私は、Rubyの上にそれを比較する必要があります RailsとDjangoの、その両方 74 00:03:26,940 --> 00:03:30,450 偉大なフレームワークですが、 彼らは両方の仮定を行います 75 00:03:30,450 --> 00:03:33,600 あなたがしたい方法について データベースと対話、 76 00:03:33,600 --> 00:03:36,900 どのようにあなたがあなたを提示したいです ビューは、彼らは間違いなくね 77 00:03:36,900 --> 00:03:38,850 それに良い面。 78 00:03:38,850 --> 00:03:41,490 >> 例えば、RubyのRailsの上 このアクティブなレコードシステムを持って、 79 00:03:41,490 --> 00:03:43,100 これは本当にいいです データを操作する方法、 80 00:03:43,100 --> 00:03:45,960 しかし、あなたは上のRubyを使用する場合 Railsは、あなたは一種のそれに縛られています。 81 00:03:45,960 --> 00:03:47,835 しかしフラスコで、私はよなど ピーウィーであなたを示し、 82 00:03:47,835 --> 00:03:49,830 あなたはどのようなソートを使用することができます データベースのあなたがしたいです、 83 00:03:49,830 --> 00:03:53,980 あなたはちょうどそれで引くことができます フラスコに拡張として。 84 00:03:53,980 --> 00:03:56,350 >> だから、なぜ私は本当にです フラスコのように、それはそれということです 85 00:03:56,350 --> 00:04:01,170 あなたのための仮定をしません 物事に基づいて、あなたが本当に必要としません。 86 00:04:01,170 --> 00:04:04,440 >> では、なぜあなたはフラスコを使用する必要がありますか? 87 00:04:04,440 --> 00:04:08,230 利点はそれだけで、あります 本当にコア機能を備えています 88 00:04:08,230 --> 00:04:09,420 それに組み込まれて、あなたは必要とすること。 89 00:04:09,420 --> 00:04:11,980 だから、あなたは心配する必要はありません 物事の全体の束を理解します 90 00:04:11,980 --> 00:04:13,175 あなたが本当に必要としないこと。 91 00:04:13,175 --> 00:04:15,060 あなたが心配する必要はありません 機能をオフにすることについて 92 00:04:15,060 --> 00:04:16,620 あなたが本当に必要としないこと。 93 00:04:16,620 --> 00:04:21,082 >> 私が述べたように、それはスーパーです 物事の拡張機能を追加するのは簡単 94 00:04:21,082 --> 00:04:21,790 あなたは必要ないということ。 95 00:04:21,790 --> 00:04:24,700 それらのいくつかは、フラスコを有し そのための独自のサポート。 96 00:04:24,700 --> 00:04:28,230 だから、フラスコと呼ばれるものがあります その管理を反映して、管理、 97 00:04:28,230 --> 00:04:32,060 Djangoは提供してパネル、 これはあなたに素敵な視覚的な方法を提供します 98 00:04:32,060 --> 00:04:33,405 あなたのウェブサイトを管理します。 99 00:04:33,405 --> 00:04:35,280 しかし、再び、あなたがしている場合 シンプルなものを作り、 100 00:04:35,280 --> 00:04:39,550 あなたはおそらく、大きな管理を必要としません パネルは、私はそれが超素敵だと思います。 101 00:04:39,550 --> 00:04:45,940 そして欠点は、そのあります あなたは箱の外に少ない電力を持っています。 102 00:04:45,940 --> 00:04:49,660 だから、あなたが最初にフラスコを開くとき、 あなたのPythonプログラムで、 103 00:04:49,660 --> 00:04:53,150 あなただけのフラスコから入力します 輸入*、または何でも、 104 00:04:53,150 --> 00:04:55,957 あなたが正確にすべてを得ることはありません 機能を使用するには、お勧めします。 105 00:04:55,957 --> 00:04:58,540 だから、あなたは、より明確に持っています 必要な機能をリストします。 106 00:04:58,540 --> 00:05:01,990 だから、一つの欠点だが、私 ことは、小規模なWebを構築するためだと思います 107 00:05:01,990 --> 00:05:04,782 私のようなアプリは表示されようとしています あなたは、それは本当に問題ではありません。 108 00:05:04,782 --> 00:05:07,281 そして最後の事は何ですか タイプミスである、と言うことになって、 109 00:05:07,281 --> 00:05:10,240 以下の標準化があるということです フラスコを使用する方法の規則、 110 00:05:10,240 --> 00:05:12,400 同じように多くはありませんので、 専門的にそれを使用する人々 111 00:05:12,400 --> 00:05:13,191 ジャンゴと比較。 112 00:05:13,191 --> 00:05:16,380 だから、あなたのようなものを見れば、 ジャンゴで「どのように私はXを行うのですか」、 113 00:05:16,380 --> 00:05:18,190 あなたはおそらくそれを見つけることができます。 114 00:05:18,190 --> 00:05:20,260 >> 良いデザインがあります あなたが使用できるパターン、 115 00:05:20,260 --> 00:05:22,660 しかしフラスコで、それはです ソートの独自の道を行きます、 116 00:05:22,660 --> 00:05:24,850 それはちょうどので、 かなり小さなライブラリ。 117 00:05:24,850 --> 00:05:27,100 だから、それらは、 欠点は、私は思います 118 00:05:27,100 --> 00:05:29,370 ことそれはまだ使用することをおライブラリです。 119 00:05:29,370 --> 00:05:31,909 >> それでは、ちょうどフラスコにジャンプしましょう​​。 120 00:05:31,909 --> 00:05:34,200 これは間違いないだろう 完全なチュートリアルであるためには、 121 00:05:34,200 --> 00:05:37,480 しかし、それはあなたのアイデアを与えることです 物事を構造化する方法の、 122 00:05:37,480 --> 00:05:40,790 そしてあなたが行く快適に感じます オフとマニュアルを見て 123 00:05:40,790 --> 00:05:42,570 および多くを見つけます。 124 00:05:42,570 --> 00:05:48,500 >> だから、私は本当に開放しましょう 最初は簡単な例、 125 00:05:48,500 --> 00:05:50,737 あなたは何をすることを示します 以下のように見え、その後、我々はよ 126 00:05:50,737 --> 00:05:52,070 もう少しそれを打破します。 127 00:05:52,070 --> 00:05:56,160 >> だから、これはここで、私はそれが動作して取得してみましょう。 128 00:05:56,160 --> 00:06:06,800 129 00:06:06,800 --> 00:06:09,750 だから、私は今、自分のアプリケーションを実行しています。 130 00:06:09,750 --> 00:06:15,910 私はサファリを開くつもり、とよ それは私のローカルホストで実行されています。 131 00:06:15,910 --> 00:06:19,360 だから、僕はこれを大きくするつもりです。 132 00:06:19,360 --> 00:06:23,960 しかし、ローカルホスト:5000 133 00:06:23,960 --> 00:06:27,650 >> だから、今、このすべてのことを行い である、あなたがウェブサイトを訪問するとき、 134 00:06:27,650 --> 00:06:31,490 それは「こんにちは、フラスコ」を出力します これは、超便利ではありません 135 00:06:31,490 --> 00:06:34,630 私はそれがことをクールだと思います ここで、この小さなファイルで、 136 00:06:34,630 --> 00:06:37,390 我々は、Webサーバーを実行しています それが何かを印刷しています。 137 00:06:37,390 --> 00:06:40,500 それでは、実際に見てみましょう 第二のコードでは、 138 00:06:40,500 --> 00:06:43,080 そして、少しそれを打破します。 139 00:06:43,080 --> 00:06:45,260 サイズはここに皆のための良いですか? 140 00:06:45,260 --> 00:06:51,560 >> だから、うまくいけば、あなたはいくらかです Pythonを使用して快適。 141 00:06:51,560 --> 00:06:55,820 私たちが見ることができることを仮定しています Pythonとは、それをお読みください。 142 00:06:55,820 --> 00:06:59,290 あなたはについてのご質問がある場合 何でも、私はまた、その上を行くことができます。 143 00:06:59,290 --> 00:07:03,974 >> だから、最初の行は、フラスコから、です、 私たちは、大文字の "F"で、フラスコをインポート 144 00:07:03,974 --> 00:07:06,140 これはすべての一種であります あなたが必要とする重要な機能。 145 00:07:06,140 --> 00:07:08,890 あなたが書いているときはいつでも ファイルフラスコを使用して、 146 00:07:08,890 --> 00:07:12,120 あなたはそれをインポートするつもりです、 それはすべての主要なものを持ってという理由だけで。 147 00:07:12,120 --> 00:07:15,400 私たちは次のことは、私たちです ただ、この機能のフラスコを呼び出します 148 00:07:15,400 --> 00:07:19,270 アプリのオブジェクトを作成し、あなたがしているします 常にそれを行うためにするつもり。 149 00:07:19,270 --> 00:07:25,960 >> そして、までジャンプ 一番下はすぐに、この部分はここにあり、 150 00:07:25,960 --> 00:07:28,760 'でのif_name _ == "_ main_"' Pythonの慣習のようなもの。 151 00:07:28,760 --> 00:07:32,750 だから、これはあなただけあれば実行されます Pythonを使ってこのファイルを直接実行します。 152 00:07:32,750 --> 00:07:36,040 その後、我々は意志、app.run呼び出します 実際に起こってアプリを起動。 153 00:07:36,040 --> 00:07:39,570 >> だから、それがその主な構造です あなたは、任意のフラスコアプリケーションであるでしょう、 154 00:07:39,570 --> 00:07:48,550 あなたがこれを持っているということです アプリ=フラスコ(_name_)、その後app.run。 155 00:07:48,550 --> 00:07:54,940 >> 私が持っているので、二つのこと ここで、我々はルートを呼んでいるものです。 156 00:07:54,940 --> 00:07:57,150 それでは、についてお話しましょう もう少しルーティング。 157 00:07:57,150 --> 00:07:58,430 私は戻ってスライドに行きますよ。 158 00:07:58,430 --> 00:08:02,540 >> だから、最も基本的な フラスコ内の概念がルーティングされます。 159 00:08:02,540 --> 00:08:06,750 そして、それはあなたのアイデアです Pythonで機能を割り当て 160 00:08:06,750 --> 00:08:11,280 特定のアドレスへ あなたのウェブページ上。 161 00:08:11,280 --> 00:08:13,930 だから、いつでも好きなときに 新しいルートを作成するには、 162 00:08:13,930 --> 00:08:16,500 あなたはこの@のapp.routeを使用 関数デコレータ。 163 00:08:16,500 --> 00:08:19,770 だから、あなたがに慣れていない場合 Pythonでの関数デコレータ、 164 00:08:19,770 --> 00:08:24,160 それは、この考え方です あなたは関数を取ることができます 165 00:08:24,160 --> 00:08:26,800 そして何か他のものとそれを囲みます。 166 00:08:26,800 --> 00:08:30,140 >> だから本当に、このデコレータが何をしますか、 それ以下の機能を取ることです、 167 00:08:30,140 --> 00:08:33,409 そして、それはより多くの情報を追加 それへのが、何フラスコ実際 168 00:08:33,409 --> 00:08:37,480 それが実現するんは、スーパーではありません 重要な、しかし重要なことは、 169 00:08:37,480 --> 00:08:43,640 それはあなたが、ルートの前にあります この@のapp.routeを入れ、 170 00:08:43,640 --> 00:08:46,480 ルートのアドレス、 そうスラッシュは私たちです 171 00:08:46,480 --> 00:08:48,360 我々だけでWebページを開いたときに見ました。 172 00:08:48,360 --> 00:08:49,580 だから、ホームページです。 173 00:08:49,580 --> 00:08:51,037 それはちょうどスラッシュルートです。 174 00:08:51,037 --> 00:08:52,370 そして、あなたはこの機能を持っています。 175 00:08:52,370 --> 00:08:54,453 関数の名前 あなたが好きなことができます。 176 00:08:54,453 --> 00:08:56,930 それは、必ずしもする必要はありません ルートで行う必要があります。 177 00:08:56,930 --> 00:08:59,440 そして、どのような 関数の戻り値、 178 00:08:59,440 --> 00:09:01,730 関数は文字列を返す必要があります。 179 00:09:01,730 --> 00:09:03,740 そして、その文字列のことができ 、HTMLまたは何かが含まれています 180 00:09:03,740 --> 00:09:06,920 そしてそれは何を取得します実際にあります HTMLとしてWebブラウザに戻って、 181 00:09:06,920 --> 00:09:08,200 そして、それはそれをレンダリングします。 182 00:09:08,200 --> 00:09:12,030 >> だから、これは同じコードであります それは例からでした 183 00:09:12,030 --> 00:09:16,430 我々はスラッシュを訪問するとき、私はちょうどので、実行されたこと、 それは、Hello Worldの関数を呼び出します 184 00:09:16,430 --> 00:09:20,470 単なる文字列こんにちは、フラスコを返し、 それは、画面に印刷されます。 185 00:09:20,470 --> 00:09:27,290 >> だから、別の例があります、 あなたが訪問したときにハロー/、これは、 186 00:09:27,290 --> 00:09:30,370 それは、ハローWordをプリントアウトします 実際に、Hello Worldのを言う必要があり、 187 00:09:30,370 --> 00:09:32,010 しかし、それでは、それは意図的なものであったふりをしてみましょう。 188 00:09:32,010 --> 00:09:35,140 それでは、実際に素早くそれをプルアップしてみましょう。 189 00:09:35,140 --> 00:09:41,290 >> ですから、ハロー/ localhostに行けば、 それが今、何か他のものを印刷します。 190 00:09:41,290 --> 00:09:45,680 だから、どのようにのちょうど簡単な例です 次の2つの異なる経路を作成することができます。 191 00:09:45,680 --> 00:09:50,630 >> そこで、これまでのところ、これは、超便利ではありません あなたが行うことができます全体の多くはありません、 192 00:09:50,630 --> 00:09:55,360 あなただけですべてのことを行うことができます 別のHTMLページを有します 193 00:09:55,360 --> 00:09:58,000 あなたが特定の訪問時 ページそれだけでページを読み込みます。 194 00:09:58,000 --> 00:10:00,864 それでは、いくつかの詳細を見てみましょう あなたがすることができる便利なもの。 195 00:10:00,864 --> 00:10:03,780 あなたが持つかもしれないそれで、一つのこと 私が引っ張っ例に気づきました 196 00:10:03,780 --> 00:10:07,160 アップ、私はapp.runていたことである(デバッグ=真)。 197 00:10:07,160 --> 00:10:09,580 だから、何この デバッグ引数は、ありません 198 00:10:09,580 --> 00:10:14,600 あなたのWeb​​サーバを実行するときに、 あなたがあなたのアプリケーションにいるとき、 199 00:10:14,600 --> 00:10:18,100 あなたがファイルを変更した場合、それはなります 自動的にサーバをリロードします。 200 00:10:18,100 --> 00:10:21,160 >> だから、あなたは実際にはありません 超便利であるPythonを、再起動します。 201 00:10:21,160 --> 00:10:24,020 私はそれを表示することができます。 202 00:10:24,020 --> 00:10:26,960 私は私のコードをプルアップしてみましょう その中にタイプミスと、 203 00:10:26,960 --> 00:10:30,420 その誤植がそこに置かれたふり 意図的に有益な目的のために。 204 00:10:30,420 --> 00:10:31,625 それでは、このバックを追加してみましょう。 205 00:10:31,625 --> 00:10:33,140 だから今ではHello Worldのは述べています。 206 00:10:33,140 --> 00:10:34,410 私はそれを保存します。 207 00:10:34,410 --> 00:10:36,540 そして、我々は戻ってプルアップ場合 ターミナル、あなたはよ 208 00:10:36,540 --> 00:10:39,520 それが再起動だと言います、 それは変化を検出したため、 209 00:10:39,520 --> 00:10:43,620 そして今、私たちは、このページをリロードしたとき それが正しいことを出力します。 210 00:10:43,620 --> 00:10:45,630 >> だから、デバッグは、そのための超便利です。 211 00:10:45,630 --> 00:10:48,740 また、あなたがいずれかを持っている場合 クラッシュのようなものなので、 212 00:10:48,740 --> 00:10:54,370 私は、このアプリケーションをクラッシュさせてみましょう 持っていることによって、それは文字列を返さありません。 213 00:10:54,370 --> 00:10:57,540 だから、それを持ってみましょう 何らかの理由でNoneを返します。 214 00:10:57,540 --> 00:11:00,810 そして私はこれを訪れたとき ページ、それだけでクラッシュします、 215 00:11:00,810 --> 00:11:04,465 しかし、サーバはただ、それをクラッシュしません 実際にあなたに超便利バックを与えます 216 00:11:04,465 --> 00:11:06,490 間違っていたすべてのトレース。 217 00:11:06,490 --> 00:11:10,050 そして、本当に良いものをということですよ このバックトレース内の任意の段階で、 218 00:11:10,050 --> 00:11:14,260 あなたがインタラクティブを開くことができ ここでは、シェル、および並べ替えの何を印刷 219 00:11:14,260 --> 00:11:17,780 変数あなたはを見てみたいです。 220 00:11:17,780 --> 00:11:21,054 >> だからデバッグが実際にあります 把握するのに有用 221 00:11:21,054 --> 00:11:23,470 何あなたに起こっています サーバーだけではなく、見て 222 00:11:23,470 --> 00:11:28,201 500内部のようなPHPで何か スーパー無用であるサーバエラー、。 223 00:11:28,201 --> 00:11:30,700 注意すべきことの一つは、あります そのあなたがオンラインであなたのアプリを置く場合 224 00:11:30,700 --> 00:11:34,260 それは、あなた公衆に見えるのです 、上のデバッグモードを残しておきたいことはありません 225 00:11:34,260 --> 00:11:37,320 人々が実際に可能性があるため 私そのコンソールを使用します 226 00:11:37,320 --> 00:11:39,150 任意のコードを実行することを示しました。 227 00:11:39,150 --> 00:11:42,120 >> そこで、彼らはどのように印刷することができます あなたがそこに持っている秘密のコード、 228 00:11:42,120 --> 00:11:44,755 彼らは正確に見ることができます どのようにあなたのウェブサイトは正常に機能しています。 229 00:11:44,755 --> 00:11:46,630 だから、本当に便利です 試験のため、常に 230 00:11:46,630 --> 00:11:50,090 前にそれを取るようにしてください あなたは、オンラインで何かを公開します。 231 00:11:50,090 --> 00:11:56,640 >> だから、何かを使用しているとき PHPのように、このアイデアがあります 232 00:11:56,640 --> 00:11:58,920 あなたが渡すことができること ウェブページとの間の情報 233 00:11:58,920 --> 00:12:03,620 実際に情報を置くことによって GETリクエストされたURLで、 234 00:12:03,620 --> 00:12:07,490 しかしフラスコ中で、あなたが実際にすることができます ソートのような何かを、 235 00:12:07,490 --> 00:12:10,590 持っているルートを持つことにより、 その一部として変数。 236 00:12:10,590 --> 00:12:14,090 >> だから、これを見た場合 ここでは、画面上の例では、 237 00:12:14,090 --> 00:12:19,930 我々はだルートを持っています ( '/こんにちは/')、およびので、あなたが訪問すれば 238 00:12:19,930 --> 00:12:23,790 /こんにちは/何か、その何か 実際にいっぱいになるために起こっています 239 00:12:23,790 --> 00:12:25,490 名前の変数に。 240 00:12:25,490 --> 00:12:27,850 そして、関数ことに気付きます それは、そのルートが付属しています 241 00:12:27,850 --> 00:12:31,302 パラメータに取る必要があります 名前、それは実際になるように 242 00:12:31,302 --> 00:12:32,510 関数に渡されます。 243 00:12:32,510 --> 00:12:34,190 >> そして、一度あなたがしています その関数の内部で、 244 00:12:34,190 --> 00:12:36,420 あなたのようなことを扱うことができます 通常のPython変数、 245 00:12:36,420 --> 00:12:39,650 そのため、その後、それはなります こんにちはプリントアウトして、それ 246 00:12:39,650 --> 00:12:42,000 使用して名前を記入します いくつかの文字列フォーマット。 247 00:12:42,000 --> 00:12:48,060 >> だから、ルーティングに可変部分を追加するには、 あなたは、マーキングアングルブラケットを使用しています。 248 00:12:48,060 --> 00:12:51,220 そして、必要に応じて、あなたが使用することができます コンバータ何と呼ばれています。 249 00:12:51,220 --> 00:12:56,840 だから、あなたがこれを置く場合 コロンと注釈、 250 00:12:56,840 --> 00:13:00,015 あなたはそれがだと指定することができます int型、または浮動小数点数、またはパス、 251 00:13:00,015 --> 00:13:01,640 それが自動的にそれを変換します。 252 00:13:01,640 --> 00:13:05,130 また、変換を行うことができます Pythonの関数内で、 253 00:13:05,130 --> 00:13:09,710 ただキャストを使用することにより、時には場合 あなたはそれがint型だことを確認したいです、 254 00:13:09,710 --> 00:13:12,080 あなたはそれを置くことができます そこでの変換ルール。 255 00:13:12,080 --> 00:13:15,930 >> それでは、例をプルアップしましょう いくつかの変数のルール。 256 00:13:15,930 --> 00:13:21,480 だからここに、これは基本的に同じを持っています フラスコのインポートからと構造 257 00:13:21,480 --> 00:13:25,030 フラスコ、アプリ=フラスコ(_name_)、 そして、それは最後に実行しています。 258 00:13:25,030 --> 00:13:28,050 我々は、さまざまなこれら二つを持っています ここでは、変数のルート。 259 00:13:28,050 --> 00:13:29,900 そして最初のものは、あります 私が示した1 260 00:13:29,900 --> 00:13:34,230 ことでしたスライド、中 それだけで文字列名を取り込み 261 00:13:34,230 --> 00:13:35,650 それは、ハロー名を出力します。 262 00:13:35,650 --> 00:13:41,410 >> そして、第二 一つは、変換を使用しています。 263 00:13:41,410 --> 00:13:44,690 だから、これはそれを自動的に変換します intにし、その後、整数を倍増 264 00:13:44,690 --> 00:13:46,150 し、それをプリントアウト。 265 00:13:46,150 --> 00:13:48,220 そして、我々は、任意の並べ替えをしません その中の変換 266 00:13:48,220 --> 00:13:49,594 フラスコはそれの世話をするため。 267 00:13:49,594 --> 00:13:53,181 それでは、このランニングを取得してみましょう。 268 00:13:53,181 --> 00:13:54,930 あなたはフラスコを持っている場合 実行中のアプリケーション、 269 00:13:54,930 --> 00:13:58,440 あなたはそれのうち-Cを制御することができます サーバーの実行を停止します。 270 00:13:58,440 --> 00:14:02,420 そして、私は、変数を実行します。 271 00:14:02,420 --> 00:14:11,740 >> それでは、localhostに手放す/こんにちは/エズラと うまくいけば、これは私に挨拶します。 272 00:14:11,740 --> 00:14:14,530 273 00:14:14,530 --> 00:14:20,310 >> だから、変数に、私の名前で取りました ルートは、それは、ここでそれを充填しました。 274 00:14:20,310 --> 00:14:23,950 だから私も迅速を紹介 倍増の例。 275 00:14:23,950 --> 00:14:28,600 だから、二重/ 3 /に行けば、 それが6をプリントアウトします。 276 00:14:28,600 --> 00:14:31,440 これはの世話をしました 私たちのために変換。 277 00:14:31,440 --> 00:14:34,190 >> だから、あなたもでそれを行うことができます フロート、そして特別な何か、 278 00:14:34,190 --> 00:14:37,530 あなたのようなものを指定する必要がある場合 それはスラッシュを受け入れることができますパス、 279 00:14:37,530 --> 00:14:39,155 それは、通常は問題にはなりません。 280 00:14:39,155 --> 00:14:41,480 281 00:14:41,480 --> 00:14:43,820 これまで我々は、まだ持っています ちょうど戻っされて 282 00:14:43,820 --> 00:14:46,320 非常に興味深いものではありません文字列。 283 00:14:46,320 --> 00:14:48,730 >> 私たちは、実際に返すことができます リテラルHTML文字列。 284 00:14:48,730 --> 00:14:54,322 だから、コードの中で、私たちは何かを挿入することができます B-タグは、太字にしたいです、 285 00:14:54,322 --> 00:14:56,030 しかし、ほとんどの時間をあなたに 実際にはしたくありません 286 00:14:56,030 --> 00:14:58,420 HTMLコードを書くことにします Pythonコードインチ 287 00:14:58,420 --> 00:15:01,940 それは、本当に厄介取得します そして、それは良い時間はありません。 288 00:15:01,940 --> 00:15:06,430 >> フラスコは、私たちが分離することができます テンプレートと呼ばれるものに、HTML、 289 00:15:06,430 --> 00:15:09,467 もしそうであればあなたが考えています MVCモデルの観点から 290 00:15:09,467 --> 00:15:11,550 あなたが精通していること、 うまくいけば、作業から 291 00:15:11,550 --> 00:15:15,520 CS50ファイナンスと少し、 あなたは、Pythonファイルと考えることができます 292 00:15:15,520 --> 00:15:19,430 コントローラ、より多くのであるとして 彼らは何でもと相互に作用しています 293 00:15:19,430 --> 00:15:20,970 あなたが持つかもしれないデータモデル。 294 00:15:20,970 --> 00:15:24,900 >> そして彼らは、ビューに出て呼び出しています そのビューに情報を渡します 295 00:15:24,900 --> 00:15:28,120 情報を入力します HTMLでそれが必要なこと。 296 00:15:28,120 --> 00:15:30,490 そして、我々は、これらのビューを呼ぶもの クラスのテンプレートがあります。 297 00:15:30,490 --> 00:15:35,280 >> だから、フラスコを別のPythonを使用しています モジュールが自動的になりますこと 298 00:15:35,280 --> 00:15:38,620 インストールピップ時インストール フラスコは、神社と呼ばれます 299 00:15:38,620 --> 00:15:40,885 あなたはこれらを追加することができます HTMLに注釈 300 00:15:40,885 --> 00:15:45,140 あなたが画面に表示されること、それはすることができます あなたは、条件文のようなものに入れて 301 00:15:45,140 --> 00:15:47,230 そして、HTMLにループします。 302 00:15:47,230 --> 00:15:51,140 >> だから、どのようにあなたのように少し見えます HTMLファイル内でPHPを使用する場合があり、 303 00:15:51,140 --> 00:15:57,380 しかし、これはちょうどその時フラスコです サーバーは、HTMLファイルを提供しています 304 00:15:57,380 --> 00:16:01,610 それはこのテンプレートエンジンを実行すると、 このを解析し、で物事を埋めます。 305 00:16:01,610 --> 00:16:06,650 だから、フラスコをrender_template機能を持っています ここ一番下に見ることができます。 306 00:16:06,650 --> 00:16:14,300 だからあなたがこのページを訪問したとき、それは このhello.htmlテンプレートをレンダリングすることになります、 307 00:16:14,300 --> 00:16:16,407 そして、このHTMLページに記入してください。 308 00:16:16,407 --> 00:16:18,990 それでは、ちょうどこの本当を実行してみましょう 素早く、そしてそれがどのように見えるかを確認、 309 00:16:18,990 --> 00:16:21,198 そして私は通って行きますよ より詳細に少し。 310 00:16:21,198 --> 00:16:25,380 311 00:16:25,380 --> 00:16:30,260 だから、あなたのテンプレートを行っています Templatesフォルダに移動します。 312 00:16:30,260 --> 00:16:33,980 それは自動的に範囲内になります テンプレートは、そのテンプレートのフォルダ。 313 00:16:33,980 --> 00:16:35,615 それでは、これを開いてみましょう。 314 00:16:35,615 --> 00:16:47,350 315 00:16:47,350 --> 00:16:50,005 だから、私はテンプレートの例を実行します。 316 00:16:50,005 --> 00:16:52,820 317 00:16:52,820 --> 00:17:03,660 >> だから私は/こんにちは/エズラに行けば、 それは、この恐ろしいを有し、 318 00:17:03,660 --> 00:17:05,930 私は中に入れ不快マーキータグ。 319 00:17:05,930 --> 00:17:08,050 非常にダイナミックな、非常に素晴らしいです。 320 00:17:08,050 --> 00:17:09,349 私は大ファンです。 321 00:17:09,349 --> 00:17:13,900 しかし、何が起こる場合 私はちょうど、/ハローに行きますか? 322 00:17:13,900 --> 00:17:15,220 だから、ただのHello Worldは述べています。 323 00:17:15,220 --> 00:17:17,678 私は、それを名前に合格しなかったと それが自動的にそれを埋め。 324 00:17:17,678 --> 00:17:22,050 だから、それをしたかを見てみましょう、どのように 我々は多分そのマーキーを取り除くことができます。 325 00:17:22,050 --> 00:17:26,240 >> だからここに、これは一種のです の興味深い例、 326 00:17:26,240 --> 00:17:29,101 あなたはどのようにスイッチに精通している場合 文は、言語で動作します。 327 00:17:29,101 --> 00:17:31,350 これは一種のようなものですと言います、 秋の並べ替え、 328 00:17:31,350 --> 00:17:34,266 あなたは、実際には2つの添付場所 同じ関数への​​異なるルート。 329 00:17:34,266 --> 00:17:41,190 だから我々は/ハロールートを添付し、 こんにちはへ/ハロー/名ルート、 330 00:17:41,190 --> 00:17:45,130 Pythonはあなたをすることができますusing--、我々は指定します デフォルトの関数を指定arguments-- 331 00:17:45,130 --> 00:17:48,300 そうは名前がそう、存在しない場合 私たちは/ハローに行けば、 332 00:17:48,300 --> 00:17:50,680 それは自動的にフィルタします 名前になしに等しいです。 333 00:17:50,680 --> 00:17:55,010 >> それでは、私たちはレンダリング 名前=名前のテンプレート、 334 00:17:55,010 --> 00:17:59,510 そのためには、nameパラメータに渡します この名前の関数のパラメータに等しいです、 335 00:17:59,510 --> 00:18:00,730 テンプレートに挿入します。 336 00:18:00,730 --> 00:18:04,040 それはまだどのように説明していません。 Hello Worldのを印刷するかどうかを決定します、 337 00:18:04,040 --> 00:18:05,100 または私の名前を印刷します。 338 00:18:05,100 --> 00:18:08,050 それでは、実際に見てみましょう テンプレート自体に、 339 00:18:08,050 --> 00:18:11,610 それがどこから来ていると表示されます。 340 00:18:11,610 --> 00:18:18,680 >> だから、このテンプレート内で、我々 実際にいくつかの条件付きロジックを持っています、 341 00:18:18,680 --> 00:18:20,580 これは一部の人がう 実際に、主張 342 00:18:20,580 --> 00:18:23,730 条件の多くを持つべきではありません テンプレート自体の内部ロジック。 343 00:18:23,730 --> 00:18:26,310 それは内よりでなければなりません コントローラが、この例のために 344 00:18:26,310 --> 00:18:27,476 それはかなり小さなものです。 345 00:18:27,476 --> 00:18:31,060 名前のであれば、ここで、我々はそう、確認してください 名前なしに等しくない場合、 346 00:18:31,060 --> 00:18:33,130 名前は実際にある場合 渡されたし、我々はなります 347 00:18:33,130 --> 00:18:36,210 こんにちは言う、名前で ヘッダーとマーキー、 348 00:18:36,210 --> 00:18:41,490 このすべての通常のHTML、それ以外の場合は、我々がします ただ普通にこんにちは、世界をプリントアウト。 349 00:18:41,490 --> 00:18:45,820 だから、カップルの事はここで注意すべき あなたがテンプレートをフォーマットする方法については、 350 00:18:45,820 --> 00:18:49,110 これらの、そのすべてであります 条件文、 351 00:18:49,110 --> 00:18:54,475 ソートの私たちはときにそれをどのようにPHPのような あなたはいくつかのPHPを挿入します、 352 00:18:54,475 --> 00:18:58,380 あなたはより小さい質問を使用 マークは、それがここに一種の類似です 353 00:18:58,380 --> 00:19:00,140 {%でした。 354 00:19:00,140 --> 00:19:02,130 >> そこでここでは、我々は我々の条件コードを持っています。 355 00:19:02,130 --> 00:19:05,920 そして、あなたが実際にしたいとき 文字通り何かを評価し、印刷 356 00:19:05,920 --> 00:19:08,710 画面にそれ出て、あなた 二重中括弧を使用しています。 357 00:19:08,710 --> 00:19:12,310 そこでここでは二重の中括弧は、 し、我々は名前を指定し、 358 00:19:12,310 --> 00:19:15,500 その結果、内、それが評価されます 変数名に、どの 359 00:19:15,500 --> 00:19:18,860 から渡されました テンプレート関数をレンダリングし、 360 00:19:18,860 --> 00:19:21,484 いうだけ印刷より アウト、我々はこれらを処分した場合には、 361 00:19:21,484 --> 00:19:23,150 それは言葉だけプリントアウトだろう "という名前を。」 362 00:19:23,150 --> 00:19:26,340 だから、それがために注意すべきものです。 363 00:19:26,340 --> 00:19:29,792 >> だから、別のものに 通知は、そのときに我々です 364 00:19:29,792 --> 00:19:31,500 使用したいです render_template機能、 365 00:19:31,500 --> 00:19:34,490 私たちは実際にインポートする必要があります それ明示的にフラスコから。 366 00:19:34,490 --> 00:19:36,915 そして、これは一例です フラスコのモジュール、 367 00:19:36,915 --> 00:19:39,290 あなたがインポートする必要がないこと あなたが必要としないもの。 368 00:19:39,290 --> 00:19:41,290 あなただけに持って来ることができます 機能実際に 369 00:19:41,290 --> 00:19:43,450 時々である、必要があります 素敵なので、あなたはしないでください 370 00:19:43,450 --> 00:19:46,560 すべてのこれらの機能を持っている必要があります あなたが使用していないことを周りに座っ、 371 00:19:46,560 --> 00:19:49,730 だけでなく、あなたがいることを忘れてしまった場合 render_templateをインポートする必要があり、 372 00:19:49,730 --> 00:19:52,660 あなたは、おそらく警告を取得します それはあなたがそのことについてお知らせします。 373 00:19:52,660 --> 00:19:56,700 だから、それはテンプレートです。 374 00:19:56,700 --> 00:20:01,680 >> だから、私たちはどのように示されてきました 簡単なWebページを作成し、 375 00:20:01,680 --> 00:20:04,947 とにもう少しロジックを追加 それは、変数ルーティングの点から好ましいです。 376 00:20:04,947 --> 00:20:08,280 それはあなたがに基づいて異なることを行うことができます あなたは、その後も移動し、URL、与えます 377 00:20:08,280 --> 00:20:11,950 でHTMLもう少し意味 あなたは物事をレンダリングする方法の観点から。 378 00:20:11,950 --> 00:20:14,210 あなたはすべて配置する必要はありません あなたのPythonでのHTML、 379 00:20:14,210 --> 00:20:16,640 しかしほとんどのために すべてのWebアプリケーション、 380 00:20:16,640 --> 00:20:21,480 あなたはいくつかの並べ替えをするつもりです それに関連したデータモデル。 381 00:20:21,480 --> 00:20:25,560 >> それで伝統的に、これがでしょう SQLデータベースのようなものです。 382 00:20:25,560 --> 00:20:30,280 そして、あなたは単に対話することができます 直接SQLを使用しました。 383 00:20:30,280 --> 00:20:32,190 Pythonは、持っている私は、それが呼び出されていると思います。 384 00:20:32,190 --> 00:20:33,040 SQLiteの3。 385 00:20:33,040 --> 00:20:38,454 あなただけのSQLite 3をインポートすることができますし、 直接SQLクエリを実行し、 386 00:20:38,454 --> 00:20:40,870 しかし、私はあなたのことは知りません、 私は実際には、好きではありません、 387 00:20:40,870 --> 00:20:42,750 SQLクエリを書き出します。 388 00:20:42,750 --> 00:20:45,350 それは本当に取得する傾向があります 長く複雑。 389 00:20:45,350 --> 00:20:49,180 >> だから、その何か 私が使用するようなものだものです 390 00:20:49,180 --> 00:20:53,610 あるORMとして知られています オブジェクトリレーショナルマッピング。 391 00:20:53,610 --> 00:20:56,890 との点 オブジェクト・リレーショナル・マッピング、 392 00:20:56,890 --> 00:21:00,100 二つの異なるがあるということです あなたがデータベースを考えることができる方法。 393 00:21:00,100 --> 00:21:03,240 >> 例だから 教授マラン通常 394 00:21:03,240 --> 00:21:07,660 クラスで使用し、Excelの表は、あります あなたはこれらの行とこれらの列を持っています、 395 00:21:07,660 --> 00:21:10,210 それは本当に便利です それは、SQLでどのように表現されますか 396 00:21:10,210 --> 00:21:13,170 そしてあなたはそれをどのように相互作用するかが、 それが実際だ別の方法 397 00:21:13,170 --> 00:21:16,390 時にはそれについて考えるのに便利、 クラスとオブジェクトに関するものです。 398 00:21:16,390 --> 00:21:20,420 >> だからではなく、思考の 各テーブルの持つものとして 399 00:21:20,420 --> 00:21:23,040 特定の持っているこの行 情報、あなたが実際にすることができます 400 00:21:23,040 --> 00:21:26,100 であるとしてそれを考えます 各テーブルにはクラスであり、 401 00:21:26,100 --> 00:21:29,810 の、その後、すべてのインスタンス このクラスは、特定の特性を有します。 402 00:21:29,810 --> 00:21:35,110 のので、この例では、インスタンス クラスは、テーブル内の行であり、 403 00:21:35,110 --> 00:21:37,490 して、各プロパティには、希望 表の列です。 404 00:21:37,490 --> 00:21:40,840 >> だから、私が好きなのORM おちびさんと呼ばれて使用しています。 405 00:21:40,840 --> 00:21:43,520 それは一種のフラスコのような、本当に小さいです。 406 00:21:43,520 --> 00:21:46,760 私は、彼らが一緒にうまくいくと思います、 しかし、他のORMがたくさんあり​​ます 407 00:21:46,760 --> 00:21:47,730 あなたが使用することができます。 408 00:21:47,730 --> 00:21:52,180 より一般ものです SQLAlchem​​yのとして知られています、 409 00:21:52,180 --> 00:21:56,050 私はなぜ私もともと覚えることができません 、SQLAlchem​​yの上でピーウィーを選びました 410 00:21:56,050 --> 00:21:58,311 または私はなぜ私あなたを言うだろう それは最高のものだと思います、 411 00:21:58,311 --> 00:22:01,060 しかし、私たちはこれを使用するつもりです 1私はそれを使用する方法を知っているので。 412 00:22:01,060 --> 00:22:04,760 >> そこで、一つの質問は、なぜです あなたはORMを使用して気にする必要があり、 413 00:22:04,760 --> 00:22:07,552 だけではなく、直接の SQLクエリを記述しますか? 414 00:22:07,552 --> 00:22:09,760 そして、私は最高のケースを考えて、 あなたが実際にしないことです 415 00:22:09,760 --> 00:22:11,356 SQLクエリを記述する必要があります。 416 00:22:11,356 --> 00:22:14,480 私はあなたが表示されますように、それはするには、はるかに簡単です 選択、挿入のようなものを行うには、 417 00:22:14,480 --> 00:22:16,157 削除、特にテーブルを作成します。 418 00:22:16,157 --> 00:22:17,990 それはにずっと簡単です クラス構造を記述し、 419 00:22:17,990 --> 00:22:22,250 それが作成構築するよりも、 table文が、一つのこと 420 00:22:22,250 --> 00:22:25,710 、を意識するということです ORMは、最善を尽くします 421 00:22:25,710 --> 00:22:28,640 何ほとんどを把握します 効率的なSQLクエリは次のようになり、 422 00:22:28,640 --> 00:22:30,110 時にはそれは、それが間違って取得します。 423 00:22:30,110 --> 00:22:32,660 >> そして、あなたがしている場合は特に 大きなデータベースでの作業、 424 00:22:32,660 --> 00:22:35,557 クエリことに気づくことができます それは、高速で実行されているはずです 425 00:22:35,557 --> 00:22:36,640 実際に時間がかかっています。 426 00:22:36,640 --> 00:22:40,164 そして、あなたはどのようにボンネットの下に見れば ORMは、SQLにそれを解釈しています 427 00:22:40,164 --> 00:22:42,080 それが何かをやっている可能性があります 本当にとんでもありません、 428 00:22:42,080 --> 00:22:44,371 理由だけで、それは一種の あなたの意図が間違っ仕草。 429 00:22:44,371 --> 00:22:48,080 そして、ここで、回がありました 私はそれを上書きしなければならなかった、とだけしました 430 00:22:48,080 --> 00:22:52,429 ただ、私自身のSQLクエリを実行 それは奇妙な方法で解析を実行していたので。 431 00:22:52,429 --> 00:22:54,220 だから、そこにあるいくつかの だけの方法で、オーバーヘッド 432 00:22:54,220 --> 00:22:58,680 それはあなたがコンパイルされていること SQLへのダウン文。 433 00:22:58,680 --> 00:23:06,200 >> それでは、スーパーですぐに見てみましょう データモデルの簡単な例 434 00:23:06,200 --> 00:23:07,350 あなたが使用するかもしれません。 435 00:23:07,350 --> 00:23:11,880 だから、これはPythonコードであるので、 あなたがしたいまず最初にからです 436 00:23:11,880 --> 00:23:12,950 ピーウィーインポート*。 437 00:23:12,950 --> 00:23:15,850 だから、あなたが持っているフラスコとは異なり、 すべてのこれらの個々のモジュール、 438 00:23:15,850 --> 00:23:18,125 あなたはフラスコをインポートすると、 テンプレートを作成し、いくつかの他 439 00:23:18,125 --> 00:23:20,690 我々は後で見ること、ピーウィーから、 あなただけのすべてをインポートすることができ、 440 00:23:20,690 --> 00:23:22,290 ので、それはかなり小さなライブラリです。 441 00:23:22,290 --> 00:23:26,490 >> だから、あなたがしたいまず最初に、あります 実際にこのデータベース・オブジェクトを作成します。 442 00:23:26,490 --> 00:23:31,212 だから、あなたが持っているデシベル=にSQLiteDatabase、 して、データベースの名前。 443 00:23:31,212 --> 00:23:33,170 そして、これは実際になります データベースオブジェクトを作成します 444 00:23:33,170 --> 00:23:36,230 あなたはピーウィーと、と相互作用することができること。 445 00:23:36,230 --> 00:23:40,570 >> そして、私たちは実際に持っています 私たちが作成するモデル。 446 00:23:40,570 --> 00:23:42,470 だから、テーブルには、我々が作成します。 447 00:23:42,470 --> 00:23:47,270 だから、ピーウィーの範囲内で、それぞれのクラスが持っています データベース内の独自のテーブル。 448 00:23:47,270 --> 00:23:52,800 だから、すべてのクラス ベースモデルから継承し、 449 00:23:52,800 --> 00:23:55,960 資本Mモデルです ピーウィーで定義されて何か。 450 00:23:55,960 --> 00:24:02,162 >> だから、あなたのすべてのモデルはすべき 彼らの最高のスーパークラスとして継承し、 451 00:24:02,162 --> 00:24:04,620 彼らが継承する必要があります モデルが、本当にクールです、 452 00:24:04,620 --> 00:24:07,610 あなたが実際にあなたを持つことができるということです モデルは、互いから継承されます。 453 00:24:07,610 --> 00:24:10,530 そして、多くの時間、あなたの データモデルは、必ずしもありません 454 00:24:10,530 --> 00:24:13,754 素敵な継承階層を作るが、 彼らは時間が、それは本当にうれしいです、 455 00:24:13,754 --> 00:24:15,920 あなたは、モデルを持っているので、 互いに固有。 456 00:24:15,920 --> 00:24:19,710 >> そこで、我々は、このクラスを定義しました モデルを継承する「学生」、 457 00:24:19,710 --> 00:24:21,170 それは3つのプロパティを有しています。 458 00:24:21,170 --> 00:24:24,080 それはある、IDを持っています PrimaryKeyField、これ 459 00:24:24,080 --> 00:24:26,920 提供だものです ピーウィーにより、名前はCharFieldですが、 460 00:24:26,920 --> 00:24:28,490 グレードはIntegerFieldとあります。 461 00:24:28,490 --> 00:24:32,260 だから、これはまたはであってもなくてもよいです どのようにCS50が実際にすべての店舗 462 00:24:32,260 --> 00:24:33,650 学生の成績。 463 00:24:33,650 --> 00:24:36,060 それはありませんが、これは私がそれを行うだろう方法です。 464 00:24:36,060 --> 00:24:37,920 >> そして、それは内部に有しています このクラスは、この 465 00:24:37,920 --> 00:24:41,620 あなたが行うことができるものです Pythonは、ネストしたクラスを持つことができます。 466 00:24:41,620 --> 00:24:43,920 そして、これは何かあります それはピーウィーによって必須です。 467 00:24:43,920 --> 00:24:47,250 あなたが持っているので、このクラスのメタ、 データベースがあることを指定します 468 00:24:47,250 --> 00:24:49,830 オブジェクトと等しいです 我々は上記で作成しています。 469 00:24:49,830 --> 00:24:54,339 そして、これはファイルは、この表が何であるかを言います 実際に含まれるだろう。 470 00:24:54,339 --> 00:24:57,130 だから、これはあなたが持っているものです あなたのすべてのモデルの中にすることができません。 471 00:24:57,130 --> 00:24:59,380 あなただけ指定する必要があります このメタクラス内 472 00:24:59,380 --> 00:25:01,400 そのデータベースは、DBに等しいです。 473 00:25:01,400 --> 00:25:03,940 私があるのであれば、私は通常、何をすべきか 異なるモデルの束、 474 00:25:03,940 --> 00:25:05,910 私は1つのベースを持っているということです モデル、私は通常、その 475 00:25:05,910 --> 00:25:08,839 単に「ベースモデル」と呼びます それはメタクラスがあり、 476 00:25:08,839 --> 00:25:10,380 そして、それはDBに等しい、データベースを設定します。 477 00:25:10,380 --> 00:25:13,710 そして、私のその後のモデルのすべて その基本クラスから継承します。 478 00:25:13,710 --> 00:25:16,760 そして、私が心配する必要はありません メタクラスの設定について。 479 00:25:16,760 --> 00:25:21,490 >> だから、これは実際に取得したとき SQL文にダウンコンパイル、 480 00:25:21,490 --> 00:25:24,875 それがダウンして、この厄介なことのように見えます ここでは、「テーブル学籍整数を作成します。 481 00:25:24,875 --> 00:25:26,020 " なんでも。 482 00:25:26,020 --> 00:25:30,002 >> そして、私はそれが短いと思い、 右ここでこのSQLクエリ、 483 00:25:30,002 --> 00:25:32,960 しかし、あなたはここで、このクラスを見れば あなたが起こっているのを正確に見ることができます。 484 00:25:32,960 --> 00:25:36,116 あなたは、フィールドのどのような種類を見ることができます 彼らは呼ばれているものがあります、 485 00:25:36,116 --> 00:25:38,115 そのため、私はと思います このPythonコードを見て 486 00:25:38,115 --> 00:25:43,340 より多くの、より読みやすいです このSQLクエリを記述しようとしています。 487 00:25:43,340 --> 00:25:45,990 >> だから、実際に順番に データベースを使用し、 488 00:25:45,990 --> 00:25:48,470 我々は、Pythonの中でそれに接続する必要があります。 489 00:25:48,470 --> 00:25:52,770 だから、私は通常と呼ばれる関数を書きます 2つのことを行いinitialize_db。 490 00:25:52,770 --> 00:25:54,880 それはデータベースに取り オブジェクトDBとそれ 491 00:25:54,880 --> 00:25:58,360 ちょうどオープンしており、それに接続します データベースへのセクションまで。 492 00:25:58,360 --> 00:26:00,860 あなただけしかし実行している場合 ローカルマシン上のウェブサイト、 493 00:26:00,860 --> 00:26:04,320 それは心配するスーパーたいしたものではありません 接続と切断について、 494 00:26:04,320 --> 00:26:06,885 しかし、あなたが実行している場合 そのウェブサイト上で、あなた 495 00:26:06,885 --> 00:26:10,010 必ずときに、ユーザー、ということにしたいです 彼らが閉じたとき、それに接続します 496 00:26:10,010 --> 00:26:12,270 あなたがそのようにウェブサイト、彼らが切断します 接続されている人々の束を持っていません 497 00:26:12,270 --> 00:26:14,480 データベースへのすべてを一度に。 498 00:26:14,480 --> 00:26:16,370 >> そして、ときに データベースに接続し、 499 00:26:16,370 --> 00:26:20,832 あなたは、db.create_tables呼び出したいです あなたが望むもののためにモデルを一覧表示 500 00:26:20,832 --> 00:26:21,540 テーブルを作成します。 501 00:26:21,540 --> 00:26:23,950 だからここに、私はちょうどしたいです この生徒のためにそれを作成します。 502 00:26:23,950 --> 00:26:28,070 そして、何が重要か、にあります 安全=真のほとんどの時間を指定します。 503 00:26:28,070 --> 00:26:30,380 だから何このステートメント 行います、それはということです 504 00:26:30,380 --> 00:26:33,580 用のテーブルを作成します。 学生モデルが、唯一の 505 00:26:33,580 --> 00:26:36,109 そのテーブルにはしていない場合 すでに作成されて。 506 00:26:36,109 --> 00:26:37,400 それはどのような安全な指定です。 507 00:26:37,400 --> 00:26:39,150 だから、上書きされることはありません あなたの既存のテーブル、 508 00:26:39,150 --> 00:26:41,525 それは新しいを作成します。 テーブルが存在しないものがある場合。 509 00:26:41,525 --> 00:26:45,090 だから、あなただけ作成することができます 表には、一度SQLを使用して。 510 00:26:45,090 --> 00:26:49,410 そして、そのデータベースが座っています 存在し、各時間に接続し、 511 00:26:49,410 --> 00:26:52,450 それだけに通常うれしいです このcreate_tablesコールに入れ、 512 00:26:52,450 --> 00:26:55,550 そのように、あなたがあなたを削除した場合 あなたのWeb​​を実行したデータベース 513 00:26:55,550 --> 00:26:57,960 アプリを再度、それを再作成します。 514 00:26:57,960 --> 00:27:00,730 >> そこで、念ことを確認してください 真であることが指定されています、 515 00:27:00,730 --> 00:27:03,580 またはあなたは自分のデータを検索します 毎回上書きさ取得。 516 00:27:03,580 --> 00:27:06,380 そして、あなただけ呼び出すことができます 確立することinitialize_db 517 00:27:06,380 --> 00:27:09,820 接続は、と作成します テーブル必要であれば。 518 00:27:09,820 --> 00:27:13,150 >> だから、最も一般的なもの あなたがしたいということ、 519 00:27:13,150 --> 00:27:15,920 または最も一般的なものの一つ、 実際に物事を挿入することです 520 00:27:15,920 --> 00:27:17,170 あなたのデータベースに。 521 00:27:17,170 --> 00:27:19,430 だから、むしろ持つより 挿入を書き込みます 522 00:27:19,430 --> 00:27:21,990 のすべてとステートメント 値は、指定されました 523 00:27:21,990 --> 00:27:24,650 あなたが実際に呼び出すことができます 学生のクラスの機能。 524 00:27:24,650 --> 00:27:28,200 それで、あなたはクラスを作成するとき それは、モデルから継承します 525 00:27:28,200 --> 00:27:30,200 これはメソッドを作成しています。 526 00:27:30,200 --> 00:27:33,870 >> だから、あなたはクラスname.createを行います、 あなたはパラメータを指定 527 00:27:33,870 --> 00:27:35,260 あなたに渡したいもの。 528 00:27:35,260 --> 00:27:39,200 だから、私はいくつかの学生を追加する場合 私たちのCS50グレードブックの例と、 529 00:27:39,200 --> 00:27:41,820 私は誰が持っている、デビッドに入れましょう 非常に良い成績、彼は95を持っています。 530 00:27:41,820 --> 00:27:45,100 やっていないと私、 とてもよくCS50で、私は50を持っています。 531 00:27:45,100 --> 00:27:47,600 だから、いいところ この作成関数が何をするのか、 532 00:27:47,600 --> 00:27:53,040 それはインスタンスを返すということですか、 行、それはテーブル内に作成することを、 533 00:27:53,040 --> 00:27:55,750 そのため、あなたはAのことを保存します 変数、後でそれに取り組みます。 534 00:27:55,750 --> 00:27:58,830 あなたは、周りに変更することができます 私は例を紹介します。 535 00:27:58,830 --> 00:28:03,050 >> 私はなかったことに注意してください IDを指定する必要があり、 536 00:28:03,050 --> 00:28:09,340 それなのでため PrimaryKeyField、それが自動的になります 537 00:28:09,340 --> 00:28:10,930 あなたがそれを指定しない場合、それをインクリメントします。 538 00:28:10,930 --> 00:28:12,250 そして、実際には、あなたはおそらく これを指定しないでください、 539 00:28:12,250 --> 00:28:14,810 あなたが誤っている場合があるため、 誰か他の人のIDを壊し。 540 00:28:14,810 --> 00:28:16,830 そして、あなたがしたいです それはユニークだことを確認してください。 541 00:28:16,830 --> 00:28:20,662 >> したがって、実際には、ほとんどの あなたがしたいの共通点、 542 00:28:20,662 --> 00:28:22,620 おそらくアウトを選択しています あなた一度データベースの 543 00:28:22,620 --> 00:28:24,078 そこに多くの情報を持っています。 544 00:28:24,078 --> 00:28:27,360 だから、あなたはすべてを取得したい場合は、 そうセレクト星の同等 545 00:28:27,360 --> 00:28:30,940 学生ステートメントから、それ ちょうどstudent.selectだろう。 546 00:28:30,940 --> 00:28:34,380 そして、それは、配列をあなたに戻って得られます その中の学生のすべてのオブジェクトと 547 00:28:34,380 --> 00:28:35,770 あなたが反復処理することをあなたがしたいです。 548 00:28:35,770 --> 00:28:37,019 あなたはそれのうちのものを得ることができます。 549 00:28:37,019 --> 00:28:39,310 そして、ほとんどの時間、あなたは ただ、選択したくありません、 550 00:28:39,310 --> 00:28:40,935 あなたが実際に何かを指定します。 551 00:28:40,935 --> 00:28:44,580 だから、あなたはチェーンできます 一緒にこれらの関数呼び出し、 552 00:28:44,580 --> 00:28:48,830 どのようにチェーンのと同じよう 一緒にSQLのステートメント。 553 00:28:48,830 --> 00:28:53,002 だから、)(student.selectを行うことができます。ここで、 この例では。 554 00:28:53,002 --> 00:28:54,710 そして、次のことができます 条件を指定して、 555 00:28:54,710 --> 00:28:57,880 普通のPythonを使用して 物事をチェックするブール値。 556 00:28:57,880 --> 00:29:02,110 >> そこで、この場合には、あなたがしたいです あなたが選択しているものを制限、 557 00:29:02,110 --> 00:29:06,790 student.gradeは、50に等しいです そして、student.nameは、エズラに等しいです。 558 00:29:06,790 --> 00:29:09,130 そのためには、ちょうどそれの私を取得します。 559 00:29:09,130 --> 00:29:11,340 そして実際に、1に気付きます 微妙な事はここにあります 560 00:29:11,340 --> 00:29:15,570 あなたが指定する場合、その および/またはおよびまたは/または、 561 00:29:15,570 --> 00:29:19,840 Pythonで、あなたが通常使用します、 私は、単語 "と"実際に考えます 562 00:29:19,840 --> 00:29:23,351 しかし、ここであなたは、単一のアンパサンドを使用して、 これは通常、ビット単位の演算子であり、 563 00:29:23,351 --> 00:29:25,600 しかし、この特別な場合には、 おちびさんはそれをしないだけの方法、 564 00:29:25,600 --> 00:29:27,660 あなたは、単一の使用します 指定するアンパサンド」と。」 565 00:29:27,660 --> 00:29:29,451 それは、何か 私は多くを混入し、 566 00:29:29,451 --> 00:29:32,530 それはアップしません 実際にはそれだけ。 567 00:29:32,530 --> 00:29:36,350 >> そして、あなたはすべてを持っていたら、 データベースのうち、学生、 568 00:29:36,350 --> 00:29:39,420 あなたが行った後、あなたは、選択しています あなたの摩耗または何、 569 00:29:39,420 --> 00:29:42,334 あなたは、foreachループを使用することができ、 ちょうどPythonで、通常のように、 570 00:29:42,334 --> 00:29:44,500 イテレータの任意の並べ替えを持ちます または配列の任意の並べ替えを持ちます。 571 00:29:44,500 --> 00:29:46,333 だから秒間、行うことができます student.selectで()。WHE 572 00:29:46,333 --> 00:29:52,930 (Student.grade <75)再ので、この意志 テーブル内の各学生を反復処理 573 00:29:52,930 --> 00:29:56,260 そのグレードの75未満である、これは この場合には、まだ私だけです。 574 00:29:56,260 --> 00:29:59,218 そして、あなたは内で何かを行うことができます そのループは、のように私にメールを送ります 575 00:29:59,218 --> 00:30:01,680 実際に私を伝えます 私の問題セットで回します。 576 00:30:01,680 --> 00:30:04,550 >> そこで、もう一つは、次のことができます やる、それは本当に簡単ですです 577 00:30:04,550 --> 00:30:06,460 テーブル内の行を更新します。 578 00:30:06,460 --> 00:30:08,720 だから、ここに戻って覚えて、 あなたの私は挿入し、 579 00:30:08,720 --> 00:30:11,440 私がいた値を取りました student.createによって返され、 580 00:30:11,440 --> 00:30:14,920 私はエズラと呼ばれる名前に割り当てられています。 581 00:30:14,920 --> 00:30:18,995 そして今、あなたが変更することができます そのインスタンス内の値、 582 00:30:18,995 --> 00:30:20,870 ちょうどあなたのような希望 Pythonで通常のクラス。 583 00:30:20,870 --> 00:30:25,060 >> だから、あなたが設定することができezra.grade = 95と それは、ローカルコピーが更新されます、 584 00:30:25,060 --> 00:30:28,380 しかし、あなたが実際にしたい場合 データベースにその変更をコミットし、 585 00:30:28,380 --> 00:30:31,410 あなたは、ezra.saveを呼び出す必要があります あなたは.SAVE法と呼ば 586 00:30:31,410 --> 00:30:32,650 インスタンス上。 587 00:30:32,650 --> 00:30:38,085 >> そして今、私は正常に変更されました データベース内の自分のグレード。 588 00:30:38,085 --> 00:30:41,210 だから、その後の私が巻き込まれるとしましょう データベース内の私のグレードを変更します。 589 00:30:41,210 --> 00:30:44,126 教授マランはおそらく起こっています クラスから私を削除するために、 590 00:30:44,126 --> 00:30:48,630 そのため、あなたは.deleteを呼び出すことができます ちょうどその事のインスタンスメソッド。 591 00:30:48,630 --> 00:30:51,674 >> だから、あなたが行きたいと思った場合 ここに戻ってこのループに、 592 00:30:51,674 --> 00:30:53,465 実際、代わりに すべての電子メールを送信します 593 00:30:53,465 --> 00:30:56,577 その学年以下であり、学生の 75よりも、あなたはそれらを削除したいです、 594 00:30:56,577 --> 00:30:58,660 このループ内で、可能性 s.deleteインスタンスを呼び出します。 595 00:30:58,660 --> 00:31:04,180 596 00:31:04,180 --> 00:31:07,780 そして、あなたがしたい最後のこと、 あなたが接続を確立するときはいつでもあります、 597 00:31:07,780 --> 00:31:10,350 あなたは、自分の仕事を完了し あなたは、db.close呼び出したいです 598 00:31:10,350 --> 00:31:13,190 DBは、そのデータベースであります 我々の前に持っていたオブジェクト。 599 00:31:13,190 --> 00:31:18,290 そして、あなたはそれを確認します すべてが外に閉じます。 600 00:31:18,290 --> 00:31:18,790 >> クール。 601 00:31:18,790 --> 00:31:22,410 だから今、私は例のアプリケーションがあります。 602 00:31:22,410 --> 00:31:26,880 私はあらかじめ用意されたすべての並べ替えをしました コー​​ディング任意のライブがあってないように 603 00:31:26,880 --> 00:31:30,220 ミスが、私たちは、ウォークスルーすることができます それあなたがフラスコを置く方法を見ます 604 00:31:30,220 --> 00:31:33,685 そして、一緒にピーウィー、 そして、シンプルなアプリを作ります。 605 00:31:33,685 --> 00:31:38,680 私はCS50の暴言を呼び出し、それはです シンプルなブログプラットフォームの一種。 606 00:31:38,680 --> 00:31:41,150 >> だから、最初に、私はそれを実行するだろうと それがどのように見えるかを示し、 607 00:31:41,150 --> 00:31:42,890 し、我々は、コードに多くを見ることができます。 608 00:31:42,890 --> 00:32:00,470 609 00:32:00,470 --> 00:32:02,830 わかりましたので、ちょうどこれを実行してみましょう。 610 00:32:02,830 --> 00:32:14,040 611 00:32:14,040 --> 00:32:17,250 クール、私はこれを作ってあげます 少し小さいです。 612 00:32:17,250 --> 00:32:20,000 それはちょうどので、非常にきれいではありません 私は、CSSの多くを行っていません、 613 00:32:20,000 --> 00:32:23,255 それが何をするかそれが有しています ブログ記事のこのデータベース、 614 00:32:23,255 --> 00:32:25,630 そして、それはすべてを通過 それら、それはそれらを表示します 615 00:32:25,630 --> 00:32:28,170 ページ上の最新のためです。 616 00:32:28,170 --> 00:32:30,920 だからこれらはいくつかの記事があります 私は、データベースに保存されていたこと。 617 00:32:30,920 --> 00:32:35,680 >> だから我々は新しいを作成する場合 投稿は、我々は、新しいポストを追加するために行くことができます 618 00:32:35,680 --> 00:32:42,720 私たちはのタイトルを入力することができます ポストので、何かのように、CS50セミナー。 619 00:32:42,720 --> 00:32:45,360 620 00:32:45,360 --> 00:32:46,735 うわー、本当にセミナーを楽しみます。 621 00:32:46,735 --> 00:32:51,070 622 00:32:51,070 --> 00:32:52,270 >> クール。 623 00:32:52,270 --> 00:32:56,060 その後、ポストを押すと、それはなります バックホームページにリダイレクト、 624 00:32:56,060 --> 00:33:00,039 そして、あなたはそれを参照してくださいよ 最新の投稿が追加されました。 625 00:33:00,039 --> 00:33:01,580 そして、我々はまだそこにすべてのものを持っています。 626 00:33:01,580 --> 00:33:08,080 だから今、のは、すべてのステップスルーしましょう コー​​ドとは、これが実装されている方法を参照してください。 627 00:33:08,080 --> 00:33:11,995 >> だから、私はしてみましょう最初のことを考えます 実際のモデルである、を見てみましょう。 628 00:33:11,995 --> 00:33:14,120 多くの時間、時 あなたが何かを設計しています、 629 00:33:14,120 --> 00:33:17,036 あなたが方法について最初に考えてほしいです あなたは、あなたのデータを表現しようとしています 630 00:33:17,036 --> 00:33:22,915 そしてその周りのものを設計し、 その結果、すべてが理にかなっています。 631 00:33:22,915 --> 00:33:25,290 どのように私そして、それは実際にあります 私はこれを作っていたときに、それをやりました 632 00:33:25,290 --> 00:33:28,030 私は、座って、考え 私はポストに何をしたいです。 633 00:33:28,030 --> 00:33:32,130 >> それで、ここでは、同一の構造を有しています 私は以前に言及されたこと、 634 00:33:32,130 --> 00:33:33,755 我々は、DB = Sqldatabase( 'posts.db')を行う場所。 635 00:33:33,755 --> 00:33:37,840 636 00:33:37,840 --> 00:33:40,980 実際には、あなたはおそらくしたくありません あなたの名前のデータベースでハードコードします。 637 00:33:40,980 --> 00:33:43,730 それはおそらく、パラメータでなければなりません それは多分、どこかに保存されています 638 00:33:43,730 --> 00:33:45,940 設定ファイルではなく、中 このような小さな例、 639 00:33:45,940 --> 00:33:48,310 その中でハードコードしても大丈夫です。 640 00:33:48,310 --> 00:33:53,510 >> だから今、私たちは、このPostクラスを持っています、 これはベースモデルから継承します。 641 00:33:53,510 --> 00:33:56,930 そしてそれは、再び、持っています ID = PrimaryKeyField。 642 00:33:56,930 --> 00:34:02,250 実際には、次のように指定しない場合は、 私は実際にこのを処分した場合には、 643 00:34:02,250 --> 00:34:07,152 その後、我々はの世話をしますピーウィー 自動的にそのIDフィールドを作成し、 644 00:34:07,152 --> 00:34:09,360 それが自動的になります それのPrimaryKey作る、これ 645 00:34:09,360 --> 00:34:12,485 ため、私は通常、本当に素敵だと思います、 それはあなたが持っていたいものですが、 646 00:34:12,485 --> 00:34:16,239 私は、具体的にそれを置くのが好き、 ちょうどので、私はそれがそこにということを覚えておいてください。 647 00:34:16,239 --> 00:34:19,480 しかし、あなたはそれを指定しない場合は、 それは自動的に存在します。 648 00:34:19,480 --> 00:34:22,198 >> それでは、私は日付を持っています DateTimeField型であり、すべての 649 00:34:22,198 --> 00:34:24,864 これらの異なるフィールド、よろしければ ピーウィーのドキュメントを見て、 650 00:34:24,864 --> 00:34:28,920 それはあなたに別のリストを与えるだろう あなたが使用できるフィールドのタイプ。 651 00:34:28,920 --> 00:34:34,440 ほとんどの場合、それは類似です あなたはSQLで見ることになるものに。 652 00:34:34,440 --> 00:34:37,699 だからCharFieldですが、そこにあります VarCharFields、テキストフ​​ィールド、 653 00:34:37,699 --> 00:34:40,550 非常に長いためにどのあります ブログの記事のようなテキスト、 654 00:34:40,550 --> 00:34:44,460 潜在的に、DateTimeFields、 DoubleFields、FloatFields、 655 00:34:44,460 --> 00:34:46,100 そのようなすべてのもの。 656 00:34:46,100 --> 00:34:51,570 >> そして、あなたは他の引数を渡すことができます それまで、私はここで指定しませんでした。 657 00:34:51,570 --> 00:34:55,719 たとえば、あなたがしたくなかった、と言います 2つのポストが同じタイトルを持つことができ、 658 00:34:55,719 --> 00:34:59,672 あなたのように指定することができ 真=ユニークなのようなもの、 659 00:34:59,672 --> 00:35:02,880 それはちょうど余分なパラメータです それはそれをコンパイルすることを視野 660 00:35:02,880 --> 00:35:06,865 SQLに、それが指定されます それは一意である必要があること。 661 00:35:06,865 --> 00:35:09,740 また、のようなものを指定することができます NOT NULLと他のすべてのもの 662 00:35:09,740 --> 00:35:11,750 あなたは、通常、SQLで行います。 663 00:35:11,750 --> 00:35:16,020 だから、これは非常に簡単です 日付を持つモデル。 664 00:35:16,020 --> 00:35:19,460 DateTimeField型内、ここで注意してください、 私は、デフォルトが何であるかを指定しました。 665 00:35:19,460 --> 00:35:22,560 私はあることを、それを指定しました datetime.datetime.now、 666 00:35:22,560 --> 00:35:24,920 そのための方法の これが評価されます、 667 00:35:24,920 --> 00:35:28,750 それは実際に評価します DateTime.Nowにするとき 668 00:35:28,750 --> 00:35:32,110 それは、データベースに挿入されます。 669 00:35:32,110 --> 00:35:34,760 >> 私は、私が持っているだろうと思います doubleにこれを確認、 670 00:35:34,760 --> 00:35:38,222 しかし、あなたは、その後、このような何かをした場合 それは実際に、一度それを評価します 671 00:35:38,222 --> 00:35:40,180 そして、その後のDateTime 常に同じになります。 672 00:35:40,180 --> 00:35:44,240 だから、あなたは何かをやっているだけの場合 日時と、ダブルチェック 673 00:35:44,240 --> 00:35:47,080 それはときに評価するということ 実際に挿入、あるいは取得します 674 00:35:47,080 --> 00:35:48,780 あなたが混同される可能性があります。 675 00:35:48,780 --> 00:35:51,221 >> タイトルだけです そこCharFieldです、 676 00:35:51,221 --> 00:35:53,970 あなたが渡すことができる複数の引数があります 正確にどのくらいの期間を指定で 677 00:35:53,970 --> 00:35:56,170 それになりたいが、ここでは、 それは本当に問題ではありませんでした。 678 00:35:56,170 --> 00:35:58,687 テキストがあることを行っています 全投稿のテキスト、 679 00:35:58,687 --> 00:36:01,020 それはなるだろう あなたがしたいという理由だけではTextField 680 00:36:01,020 --> 00:36:03,370 それはかなり長い文字列であることを可能にします。 681 00:36:03,370 --> 00:36:05,970 >> その後、我々は、このメタを持っています サブクラスそれだけ 682 00:36:05,970 --> 00:36:11,250 我々はデータベースをしたいことを指定します これは実際に開かれる場合 683 00:36:11,250 --> 00:36:14,267 私たちはここにあるDBオブジェクトをすることができます。 684 00:36:14,267 --> 00:36:16,350 そして、私たちが持っている最後のもの ここでは、これだけの機能であります 685 00:36:16,350 --> 00:36:18,120 我々はするつもりだこと 私たちのメインのアプリから使用 686 00:36:18,120 --> 00:36:23,970 に接続するためのデータベースを初期化します それは、その後、ポスト・テーブルを作成します。 687 00:36:23,970 --> 00:36:26,880 >> さて、メインアプリ自体を見てみましょう。 688 00:36:26,880 --> 00:36:30,800 だから、この1つはかなりあります ものよりも少し長いです 689 00:36:30,800 --> 00:36:34,840 我々は前に見たこと、 うまくいけば、それほど悪くはありません。 690 00:36:34,840 --> 00:36:37,140 だから、私はこれを拡張してみましょう。 691 00:36:37,140 --> 00:36:38,370 はい。 692 00:36:38,370 --> 00:36:42,070 >> だから、通知と私はインポートトップ 他のものの全体の束 693 00:36:42,070 --> 00:36:44,129 私たちが持っていないフラスコから 本当に前に見ました。 694 00:36:44,129 --> 00:36:46,670 そして、うまくいけば、我々は通過することができます これら一つ一つの各1 695 00:36:46,670 --> 00:36:49,420 約もう少し話 それらは、例によってソート。 696 00:36:49,420 --> 00:36:51,380 そこで、フラスコを持っています、 そして、render_template、 697 00:36:51,380 --> 00:36:54,370 これは我々の前に見てきました、 このリクエストオブジェクト、 698 00:36:54,370 --> 00:37:00,400 これは私たちがどのように見たときに出てきます 私は実際に見せていたフォーム 699 00:37:00,400 --> 00:37:01,170 作品。 700 00:37:01,170 --> 00:37:04,850 あなたがリダイレクトできた、リダイレクト バックの作成新しいポストから 701 00:37:04,850 --> 00:37:11,710 オリジナルのホームページに戻り、その後、 あなたのことができますものですURL、 702 00:37:11,710 --> 00:37:15,550 どこに把握 ウェブサイトの特定のページがあります。 703 00:37:15,550 --> 00:37:17,810 >> それでは、次の 私は事は、私のインポートです 704 00:37:17,810 --> 00:37:21,550 モデルのすべての情報 私たちは見ていたファイル。 705 00:37:21,550 --> 00:37:23,140 そして、ええ。 706 00:37:23,140 --> 00:37:28,720 >> だから、新しい何か他のものは来ます あなたが扱っているまで、 707 00:37:28,720 --> 00:37:31,850 特にデータベース、 指定できるということです 708 00:37:31,850 --> 00:37:35,110 前に呼び出される関数 取得すべてのリクエスト、および機能 709 00:37:35,110 --> 00:37:39,690 これを使用して、すべての要求の後に呼び出さ 関数デコレータapp.before要求。 710 00:37:39,690 --> 00:37:42,324 >> そして、これは実行されてしまいます どここの関数です。 711 00:37:42,324 --> 00:37:44,240 これは、である必要はありません 要求の前に呼び出され、 712 00:37:44,240 --> 00:37:46,281 通常、それは何か それを呼び出すことが賢明。 713 00:37:46,281 --> 00:37:48,580 714 00:37:48,580 --> 00:37:51,650 あなたはどのような機能を指定することができます あなたは、そこに呼ば取得したいです 715 00:37:51,650 --> 00:37:56,330 私はこのinitialize_dbを指定しました 私たちはモデルに戻っていた機能 716 00:37:56,330 --> 00:38:02,390 ファイルなので、すべての要求の前に、あなた データベースに接続します。 717 00:38:02,390 --> 00:38:04,560 >> 二つの異なるがあります。 方法は、あなたがこれを行うことができます。 718 00:38:04,560 --> 00:38:10,830 あなたは@appを行うことができます。、私は それはafter_requestだと信じています。 719 00:38:10,830 --> 00:38:13,800 そして、の間の差 after_requestとteardown_request、 720 00:38:13,800 --> 00:38:17,590 after_requestのみ起こるということです リクエストが実際に有効であった場合。 721 00:38:17,590 --> 00:38:20,440 だから、場合にのみ リクエストが成功しました、 722 00:38:20,440 --> 00:38:22,490 何が間違っていたんであれば、 しかしteardown_request 723 00:38:22,490 --> 00:38:26,300 成功した場合に起こります 要求、またはエラーの場合には 724 00:38:26,300 --> 00:38:28,252 >> そこで、通常は、あなたがしたいです teardown_requestを使用するには、 725 00:38:28,252 --> 00:38:30,460 あなたは何をする必要がない限り、 特に何か違います、 726 00:38:30,460 --> 00:38:31,470 エラーの場合には 727 00:38:31,470 --> 00:38:35,122 しかし、単にデータベースを閉じるため、 それが成功するかどうかそれが失敗した場合、 728 00:38:35,122 --> 00:38:37,080 我々はあなたが切断しますか データベースから。 729 00:38:37,080 --> 00:38:41,240 だからそれが、db.closeと呼ばれています DBオブジェクトに。 730 00:38:41,240 --> 00:38:43,740 >> teardown_requestことに注意してください 例外になります。 731 00:38:43,740 --> 00:38:46,781 実際にあったのであれば、あなたは確認することができます それが閉鎖されたエラー、 732 00:38:46,781 --> 00:38:49,390 しかし、ここでは、うまくいけば、そこに エラーの全体の多くではありません、 733 00:38:49,390 --> 00:38:52,720 私たちはただ一種のことを無視しています。 734 00:38:52,720 --> 00:38:55,990 >> さて、それの残りの部分は、あまりにも悪いことではありません。 735 00:38:55,990 --> 00:39:02,240 だから、私たちはホームページに行くとき、 我々はこのhome.htmlテンプレートのレンダリング 736 00:39:02,240 --> 00:39:03,490 それが開きます。 737 00:39:03,490 --> 00:39:06,240 パスは、ポストであります 、どのような本に等しいです 738 00:39:06,240 --> 00:39:10,260 私たちはこのポストを持っている、であることを覚えているん モデルは、私たちは、すべての記事を選択 739 00:39:10,260 --> 00:39:13,890 そして、あなたが行うことができます別のもの、 あなたは、WHERE句を指定することができます 740 00:39:13,890 --> 00:39:16,910 次のように指定することができます 注文し、私たちは取ります 741 00:39:16,910 --> 00:39:18,820 記事のすべてのこと 次に、選択取得し、 742 00:39:18,820 --> 00:39:22,590 我々はで注文して post.date.descending。 743 00:39:22,590 --> 00:39:25,030 そして、それはときに、指定します 彼らは実際に出てきます、 744 00:39:25,030 --> 00:39:29,250 最も最近のもの 非常に最初のものになります。 745 00:39:29,250 --> 00:39:31,420 >> そして、我々はそれを渡すことに home.htmlテンプレート、 746 00:39:31,420 --> 00:39:34,240 それでは、実際に開いてみましょう 本当に素早くそのテンプレート、 747 00:39:34,240 --> 00:39:36,760 そしてそれは働いているかを見てみましょう。 748 00:39:36,760 --> 00:39:42,130 そして、これは偉大なHTMLのではなく、 うまくいけば、我々は、Pythonに集中することができます。 749 00:39:42,130 --> 00:39:46,960 >> だから新規追加へのリンクがあります ポストので、このルートを指定します 750 00:39:46,960 --> 00:39:51,580 我々フラスコ内 右ここにある、定義されます。 751 00:39:51,580 --> 00:39:56,310 これは、新しいポストルートです、 我々はここでそれをまで指定。 752 00:39:56,310 --> 00:40:00,450 そして、そのためには、次に移動しますリンクです フラスコサーバ内のその経路に。 753 00:40:00,450 --> 00:40:03,820 >> もっと面白いこと これは、ここでループのためのものです。 754 00:40:03,820 --> 00:40:07,685 だから我々はこのことを指定します ポストパラメータします 755 00:40:07,685 --> 00:40:09,560 渡されました render_template機能、 756 00:40:09,560 --> 00:40:13,550 投稿の中ですべての投稿のための に渡されるオブジェクト。 757 00:40:13,550 --> 00:40:16,600 私たちは、プリントアウトしたいです 記事のタイトル、H1で、 758 00:40:16,600 --> 00:40:21,930 して、以下に、我々はプリントアウトしたいです 段落内のポストテキスト。 759 00:40:21,930 --> 00:40:25,710 >> そしてここで、私たちは実際にすることができます Pythonの関数を呼び出し、 760 00:40:25,710 --> 00:40:35,130 私たちは、ST-RF-時間をstrftimeのを呼び出すことができ、 あなたはフォーマット文字列で渡すことができます 761 00:40:35,130 --> 00:40:37,064 あなたがデータを印刷すること。 762 00:40:37,064 --> 00:40:39,980 だから、それはあなたができることかなりいいですよ 実際にはこのPythonの関数を呼び出します 763 00:40:39,980 --> 00:40:41,090 ここで内から。 764 00:40:41,090 --> 00:40:44,370 あなたは上の書式設定を行う必要はありません コントローラ側、本当にため、 765 00:40:44,370 --> 00:40:47,770 日付をフォーマットすると、そのものです あなたは、ビュー内で対処したいです。 766 00:40:47,770 --> 00:40:51,480 >> そして、これらのパーセントのすべて 物事が超重要ではありません。 767 00:40:51,480 --> 00:40:55,270 あなたはドキュメントを見てみると Pythonでstrftime関数のために、 768 00:40:55,270 --> 00:40:57,040 それはすべてのこれらを指定します 物事が、それはです 769 00:40:57,040 --> 00:40:59,190 どのように、私たちが探していたとき こちらのホームページで、 770 00:40:59,190 --> 00:41:04,440 それは素敵でこれをフォーマットします 日付、それはAMまたはPMを指定し、 771 00:41:04,440 --> 00:41:09,410 通常は、我々の場合 ここでこれを持っていませんでした、 772 00:41:09,410 --> 00:41:14,024 あなたは、おそらくいくつかのゴミを取得します 非常に良い見ていない日。 773 00:41:14,024 --> 00:41:15,940 そして、我々は指定します post.text、と私は可能性があり 774 00:41:15,940 --> 00:41:19,460 のカップルを入れています ラインはちょうど、ここに壊れます 775 00:41:19,460 --> 00:41:21,820 各ポストの間にいくつかのスペースを入れます。 776 00:41:21,820 --> 00:41:26,270 >> だから、私は最も重要だと思います この例では、事、 777 00:41:26,270 --> 00:41:28,697 あなたはループのためにこれを使用することができるということです。 778 00:41:28,697 --> 00:41:30,780 これはに類似しています 物事はあなたがPHPで行うことができます。 779 00:41:30,780 --> 00:41:32,905 あなたは、反復処理することができます すべてがで渡されます、 780 00:41:32,905 --> 00:41:36,719 そのため、代わりに行うために持っていることの コピー/貼り付け、コピー/すべてのHTMLを貼り付け、 781 00:41:36,719 --> 00:41:40,010 あなただけ一旦それを記述する必要があり、 あなたは記事のすべてを反復処理することができます。 782 00:41:40,010 --> 00:41:41,510 >> そして、これは何かあります あなたがしたいという共通 783 00:41:41,510 --> 00:41:44,510 あなたは多くのデータを持っている場合、行うには、 ことは、データのすべてのためのものです、 784 00:41:44,510 --> 00:41:48,370 あなたは同じようなことをしたいです。 785 00:41:48,370 --> 00:41:51,690 そして、ちょうどそのときに、覚えています 明示的に何かを印刷します 786 00:41:51,690 --> 00:41:54,780 HTMLで、使用 ここでは二重の中括弧、 787 00:41:54,780 --> 00:41:57,820 その後、指定したいとき 状態に関するいくつかの情報、 788 00:41:57,820 --> 00:42:02,430 または約ループのために、あなた パーセントのブラケットを使用しています。 789 00:42:02,430 --> 00:42:08,730 >> そこで、Pythonのに戻ります コー​​ドは、その結果は説明します 790 00:42:08,730 --> 00:42:12,242 何が主に起こっています ルート、我々はそこに行きます、 791 00:42:12,242 --> 00:42:14,450 それだけですべて表示されます ポストが、その後の質問 792 00:42:14,450 --> 00:42:17,440 私たちは実際に入手できますかどのように、です データベースへの投稿、どの 793 00:42:17,440 --> 00:42:18,970 もう少し興味深いものです。 794 00:42:18,970 --> 00:42:23,960 >> それで、あなたは新規をクリックしたときに 私たちはここで見た後、リンク、 795 00:42:23,960 --> 00:42:26,000 それは、このフォームにリダイレクトされます。 796 00:42:26,000 --> 00:42:29,580 そして、それはちょうど簡単な呼び出しです その後render_template機能、 797 00:42:29,580 --> 00:42:32,110 HTMLフォーム内の​​新しいポストを渡します。 798 00:42:32,110 --> 00:42:36,212 それでは、その見てみましょう。 799 00:42:36,212 --> 00:42:37,420 したがって、この1は非常に簡単です。 800 00:42:37,420 --> 00:42:45,110 これは、単純なHTMLフォームを有します 少しはお馴染みになります、 801 00:42:45,110 --> 00:42:47,380 CS50ファイナンスのフォームに基づきます。 802 00:42:47,380 --> 00:42:49,940 だから、私たちは、ここでアクションを指定します。 803 00:42:49,940 --> 00:42:52,435 そして、ここで、あなたが作業している場合 PHPで、通常は、それを 804 00:42:52,435 --> 00:42:55,930 以下のようなものになるだろう、 create.PHPが、ここでは 805 00:42:55,930 --> 00:42:59,960 私たちは実際にルートを指定 フラスコサーバ内。 806 00:42:59,960 --> 00:43:02,520 だから、このルートが対応 作成したルートへ 807 00:43:02,520 --> 00:43:05,680 我々は、ここに持っていることをします 我々は、第二​​に入るでしょう。 808 00:43:05,680 --> 00:43:07,630 >> だから、我々はそれを指定します それは、POSTメソッドです 809 00:43:07,630 --> 00:43:09,820 私たちは、送りたいので、 このフォームデータ、および通常 810 00:43:09,820 --> 00:43:12,945 フォームからデータを送信しているとき、 あなたはポストの要求を使用する場合があり、 811 00:43:12,945 --> 00:43:15,760 ちょうどあなたが終わるません この大きな、扱いにくいURLに置き換えてください。 812 00:43:15,760 --> 00:43:18,970 しかし、あなたはまた、GETリクエストを使用することができ、 そして、可変ルーティングとそれを渡します 813 00:43:18,970 --> 00:43:21,170 しかし、フォームのために、それはうれしいです ここにポスト要求に。 814 00:43:21,170 --> 00:43:24,620 だから、その後、あなたのような HTMLやPHPで行うと、 815 00:43:24,620 --> 00:43:28,420 あなたはこれらのテキストの入力を指定することができ、 そして、あなたはそれらの名前を指定することができ、 816 00:43:28,420 --> 00:43:33,490 それが渡される名前です フラスコ内のリクエストオブジェクトに。 817 00:43:33,490 --> 00:43:36,960 >> そして、我々が提出しています ポストを言うボタンを押します。 818 00:43:36,960 --> 00:43:40,760 そしてここで、ポストの名前です。 ボタン、それはブログの記事だから、 819 00:43:40,760 --> 00:43:42,700 しかしここで、投稿は、リクエストメソッドです。 820 00:43:42,700 --> 00:43:47,060 だから、それらは同じ単語です しかし、実際には関係のありません。 821 00:43:47,060 --> 00:43:48,460 うん 822 00:43:48,460 --> 00:43:54,800 >> Pythonのコードに戻って、 我々はcreateメソッドを呼び出したとき、 823 00:43:54,800 --> 00:43:57,702 あなたができることをここに気づきます 実際にルート内で指定します 824 00:43:57,702 --> 00:44:00,650 リクエストメソッド あなたが受け入れるようにしたいことを、 825 00:44:00,650 --> 00:44:04,770 ので、ここで、私は私の指定 POSTメソッドのみを受け入れるようにしたいです。 826 00:44:04,770 --> 00:44:09,800 だから、私は実際にページを訪問しようとした場合 直接に、GET要求を使用しています、 827 00:44:09,800 --> 00:44:11,700 それは、「メソッドが許可されていません。 "私に教えてくれます 828 00:44:11,700 --> 00:44:15,840 >> だから、あなたは、ソートのようなページがあります これは私だけだページを作成 829 00:44:15,840 --> 00:44:20,192 本当にのための方法として使用して フォームが送信取得するには、 830 00:44:20,192 --> 00:44:22,900 あなたはしないように指定することができます 人々はそこに行くことができるようにしたいです 831 00:44:22,900 --> 00:44:25,650 直接GETリクエストを経由して、 または、あなたが望んでいなかった場合、 832 00:44:25,650 --> 00:44:28,580 何らかの理由で、POSTリクエスト、 あなただけの、ここでGET指定することができます 833 00:44:28,580 --> 00:44:32,720 この例では、ただ ポスト要求が出て行きたいです。 834 00:44:32,720 --> 00:44:38,700 >> だから、create_postが呼び出されたときに、時 我々は、POSTリクエストを経由していることを訪問します 835 00:44:38,700 --> 00:44:43,600 あなたは、特定に行くたびに ルート、この要求オブジェクトがあると、 836 00:44:43,600 --> 00:44:46,640 私たちは、インポートする必要がありました 非常に上部にある要求、 837 00:44:46,640 --> 00:44:49,640 しかし、この要求があります に渡されるオブジェクト、 838 00:44:49,640 --> 00:44:53,210 あなたは、フォームデータにアクセスすることができ、 これは自動的に満たされてしまいます 839 00:44:53,210 --> 00:44:55,070 フォームからリクエストを送信するとき。 840 00:44:55,070 --> 00:44:56,990 >> そして、私が何を考えて 、本当にクールです 841 00:44:56,990 --> 00:45:02,840 フォームオブジェクトは、渡さすること で、ちょうどPythonの辞書であります 842 00:45:02,840 --> 00:45:10,560 あなたはので、ここaccess--場合、含まれている、しましょう 私はただ、その隣にHTMLをプルアップ 843 00:45:10,560 --> 00:45:17,670 あなたはそれを持つことができます 参照として、はい、そう 844 00:45:17,670 --> 00:45:21,060 私たちはここで指定する名前 異なるフィールドのため、 845 00:45:21,060 --> 00:45:23,900 タイトルとテキスト、我々 その後、ちょうどここの上にそれらを使用します 846 00:45:23,900 --> 00:45:27,110 フォームデータのインデックスとして。 847 00:45:27,110 --> 00:45:28,950 だから、超便利です。 848 00:45:28,950 --> 00:45:33,320 >> それでは、私たちは、post.createを呼び出します 作成し、自動的に挿入されます 849 00:45:33,320 --> 00:45:36,850 データベースにこの新しいポストオブジェクト。 850 00:45:36,850 --> 00:45:40,690 そして、私はこの関数を作成すると思います ここではどのように本当にクールな例です。 851 00:45:40,690 --> 00:45:44,900 強力なフラスコであり、これと協力して、 あなたが何かをしていた場合のため 852 00:45:44,900 --> 00:45:48,660 PHPで、あなたがする必要があるかもしれません 検証の多くを行います、 853 00:45:48,660 --> 00:45:51,730 あなたがしてしなければなりません データベース接続を確立し、 854 00:45:51,730 --> 00:45:55,210 あなたがしてしなければなりません SQLクエリを実行し、 855 00:45:55,210 --> 00:45:59,550 しかし、ここで私たちは、この素敵なを持っています post.create、これは私たちがちょうどそのことができます 856 00:45:59,550 --> 00:46:01,520 情報を取得します リクエストオブジェクトの、 857 00:46:01,520 --> 00:46:05,370 し、新しいにそれを渡します 我々が作成しているポスト。 858 00:46:05,370 --> 00:46:07,850 >> そして、非常に最後の 私たちがやりたいこと、 859 00:46:07,850 --> 00:46:09,630 リダイレクトすることです ホームへ戻るユーザー。 860 00:46:09,630 --> 00:46:13,020 そして、私たちはこれを使用します フラスコは、機能をリダイレクトします。 861 00:46:13,020 --> 00:46:17,770 そして、私たちは見ていない何かを 前、このURL機能がありました。 862 00:46:17,770 --> 00:46:21,970 だから、機能のためのURLができます あなたが実際に名前を渡します 863 00:46:21,970 --> 00:46:26,090 Pythonコード内の関数の、 むしろ特定のルートより 864 00:46:26,090 --> 00:46:26,720 それはATのこと。 865 00:46:26,720 --> 00:46:32,107 >> だから私は同じように簡単に持つことができ スラッシュするようにユーザーをリダイレクトし、 866 00:46:32,107 --> 00:46:37,050 これは家に帰っそれを送るだろうが、 機能のURLを使用するといいです、 867 00:46:37,050 --> 00:46:39,990 あなたが変更した場合のため 物事がある場所、 868 00:46:39,990 --> 00:46:44,080 それでは、私は変更することとしましょう 代わりに/家にあると家庭、 869 00:46:44,080 --> 00:46:47,040 これはまだ、その後の/ homeを返します、 実際に行くと検索しますので、 870 00:46:47,040 --> 00:46:50,770 関数の名前、およびそれ そのため、URLをあなたに戻って得られます。 871 00:46:50,770 --> 00:46:52,490 >> だから、ソートの上 あなたがしていることを前提 872 00:46:52,490 --> 00:46:55,489 どこに物事を変更する可能性が高いです 関数の名前よりも、です。 873 00:46:55,489 --> 00:46:58,840 あなたは本当にこれを使用することができます 機能のための素敵なURLです。 874 00:46:58,840 --> 00:47:02,470 そして、もう一つの事は知っておくべき それは、少しトリッキーです 875 00:47:02,470 --> 00:47:05,750 あなたはあなただけのことができると思うことです URLにリダイレクトを呼び出し、 876 00:47:05,750 --> 00:47:10,600 しかし、実際にはすべてのルートのは、持っています テキストとHTMLのいくつかの並べ替えを返すために、 877 00:47:10,600 --> 00:47:14,360 だから、実際に持っています リダイレクトコールを返します。 878 00:47:14,360 --> 00:47:18,379 そうしないと、あなたが何かを得るでしょう 無効な文字列を返すないことについて、 879 00:47:18,379 --> 00:47:21,420 これらのすべてが返す必要があるため HTMLは、あなたが実際にレンダリングします。 880 00:47:21,420 --> 00:47:26,980 >> だから、あなたがリダイレクトを呼び出すと、 それは、ページにリダイレクト 881 00:47:26,980 --> 00:47:30,270 それは実際にHTMLを返します あなたはそのリダイレクトを実行する必要があります。 882 00:47:30,270 --> 00:47:34,430 883 00:47:34,430 --> 00:47:37,110 ホームページに戻ります。 884 00:47:37,110 --> 00:47:39,200 だから我々は、これらの2つの異なるビューがあります。 885 00:47:39,200 --> 00:47:40,132 我々はホームビューを持っています。 886 00:47:40,132 --> 00:47:41,590 それとも、私はテンプレートを言う必要がありますね。 887 00:47:41,590 --> 00:47:44,190 我々は、これら2つのテンプレートを持っています、 ホームテンプレートいます 888 00:47:44,190 --> 00:47:48,500 私達の記事のすべてを表示し、 その後、我々はこの広告の事を持っています、 889 00:47:48,500 --> 00:47:52,970 あなたがポストをクリックすると、それは行きます フラスコ内の新しいルートに、 890 00:47:52,970 --> 00:47:55,920 しかし、そのルートは必ずしもありません 対応するテンプレートを持っています。 891 00:47:55,920 --> 00:47:59,290 892 00:47:59,290 --> 00:48:01,560 あなたが見ることはありません 何が、あなたはまだすることができます 893 00:48:01,560 --> 00:48:04,090 この作品は持って行きます 舞台裏に。 894 00:48:04,090 --> 00:48:07,450 そして、あなたがリダイレクトされます ホームページに戻ります。 895 00:48:07,450 --> 00:48:12,230 そして間違いなく、それが動作するのは簡単です テンプレートにいくつかのよりよいCSSの 896 00:48:12,230 --> 00:48:15,580 これは多くのよりよい見えるように、 しかし、メイン・ロジックのすべて 897 00:48:15,580 --> 00:48:18,590 Pythonでもあります。 898 00:48:18,590 --> 00:48:20,020 >> その一例についてのご質問? 899 00:48:20,020 --> 00:48:22,760 私はたくさんのがあります知っています 異なるものは、そこに行きます 900 00:48:22,760 --> 00:48:25,341 私たちが見ていなかったことがたくさん 前、何でものように。 901 00:48:25,341 --> 00:48:25,840 うん。 902 00:48:25,840 --> 00:48:28,346 >> 聴衆1:あなたは何もする必要はあります データをスクラブする特殊 903 00:48:28,346 --> 00:48:29,600 形から入ってきますか? 904 00:48:29,600 --> 00:48:31,109 私は、「作成」先ほど言った気づきました 905 00:48:31,109 --> 00:48:33,900 エズラZIGMOND:うん、のように 実際に、それは本当に良い点です。 906 00:48:33,900 --> 00:48:36,350 そこで問題があって、あなたを行います チェックして確認する必要があります 907 00:48:36,350 --> 00:48:39,190 データが有効であり、その スクラブの任意の並べ替えを行います 908 00:48:39,190 --> 00:48:41,840 それが有効であることを確認するために、 あなたがここに見ることができるようにあるため、 909 00:48:41,840 --> 00:48:42,660 私はそれをやっていませんよ。 910 00:48:42,660 --> 00:48:48,140 それでは、何が起こるか見てみましょう 私は空白のものを投稿します。 911 00:48:48,140 --> 00:48:51,190 だから、それは実際にちょうど作ってあげます 空白のポストと日時を入力します。 912 00:48:51,190 --> 00:48:55,990 >> だから実際には、あなたはおそらくだろう 以下のような何かをしたいです、 913 00:48:55,990 --> 00:49:04,749 タイトルはに等しい場合多分指定 空の文字列は、これをしません。 914 00:49:04,749 --> 00:49:07,290 タイトルがある場合は、それだけを行います 空の文字列に等しくありません。 915 00:49:07,290 --> 00:49:10,330 だから、実際には自動的にしません その洗浄の世話をします 916 00:49:10,330 --> 00:49:12,820 あなたのために、あなたはまだそれを行う必要があります。 917 00:49:12,820 --> 00:49:14,330 うん、良い質問。 918 00:49:14,330 --> 00:49:18,497 >> 聴衆2:それはスクラブありません 続編注入のため? 919 00:49:18,497 --> 00:49:19,890 あなたは知っていますか? 920 00:49:19,890 --> 00:49:22,830 >> エズラZIGMOND:うまくいけば、 おちびさんはそれを行います。 921 00:49:22,830 --> 00:49:25,830 私はそれは確かにかなりだと思います 悪いライブラリは、それはそれをしなかった場合。 922 00:49:25,830 --> 00:49:29,511 923 00:49:29,511 --> 00:49:32,690 私は正確に知りません。 924 00:49:32,690 --> 00:49:34,820 私が見ていると思います それが発生したことを問い合せます。 925 00:49:34,820 --> 00:49:38,980 私は私が入力した場合、と思います ソートの見えたブログの記事 926 00:49:38,980 --> 00:49:46,370 SQLインジェクション攻撃のように、 このような何か、この場合 927 00:49:46,370 --> 00:49:49,370 パスワードフィールドか何かのようなものです、 あなたはこのような何かを行う可能性があります。 928 00:49:49,370 --> 00:49:53,410 >> 私はまだだろうと思い 文字通り投稿を取得、 929 00:49:53,410 --> 00:49:59,200 私はおちびさんがやるんだと思います データのスクラビングのいくつかの並べ替え 930 00:49:59,200 --> 00:50:01,680 それは実際にそれを実行する前に。 931 00:50:01,680 --> 00:50:04,510 >> 聴衆1:テキストフ​​ィールドであることを プレーンテキストを取るように設計された、右? 932 00:50:04,510 --> 00:50:05,710 >> エズラZIGMOND:ええ、そうです。 933 00:50:05,710 --> 00:50:06,465 うん。 934 00:50:06,465 --> 00:50:09,590 だから私はすべてのことを考えて、これはあります 正しい動作は、それはそれを行います、 935 00:50:09,590 --> 00:50:12,170 私はそれピーウィーを考えます うまくいけばやるん 936 00:50:12,170 --> 00:50:13,780 その端に保護のいくつかの並べ替え。 937 00:50:13,780 --> 00:50:16,090 そして、あなたがしたい場合 ダブルチェック、それがあります 938 00:50:16,090 --> 00:50:19,530 クエリを生成する方法があります。 939 00:50:19,530 --> 00:50:22,622 だからあなたがする必要はありません それを直接実行します。 940 00:50:22,622 --> 00:50:24,330 私が取る必要があるだろう ドキュメントを見て、 941 00:50:24,330 --> 00:50:27,930 しかし、あなたは実際に見ることができます それが生成されるSQL、 942 00:50:27,930 --> 00:50:30,840 そのを見て、そして作ります それは物事をエスケープしていることを確認してください。 943 00:50:30,840 --> 00:50:33,700 >> なぜあなたがかもしれないもう一つの理由 SQLを見てみたいです 944 00:50:33,700 --> 00:50:37,920 そのおちびさんは、次の場合ですが、出力しています 物事はゆっくりと本当に起こっているように見えます、 945 00:50:37,920 --> 00:50:41,090 あなたが見て、それが何を見ることができます それは時々だから、実際に、やっ 946 00:50:41,090 --> 00:50:44,670 誤って追加するのは簡単 あなたはそれを書くようにして、で、 947 00:50:44,670 --> 00:50:47,880 あなたが誤ってそれを持つことができます 最初のデータベース全体を選択し、 948 00:50:47,880 --> 00:50:50,230 して、いくつかの並べ替え操作を行います その上で、ときに本当にあなた 949 00:50:50,230 --> 00:50:51,320 サブセットを選択するためのもの。 950 00:50:51,320 --> 00:50:53,560 >> だから、物事がされていない場合 かなり右に行きます、 951 00:50:53,560 --> 00:50:57,300 それは要求を見てみるために良いことです それは実際に生成なってきました。 952 00:50:57,300 --> 00:50:57,800 うん。 953 00:50:57,800 --> 00:51:02,100 >> 聴衆2:あなたが最初に起動すると、 あなたは5000としてポートに入れます。 954 00:51:02,100 --> 00:51:02,904 >> エズラZIGMOND:うん。 955 00:51:02,904 --> 00:51:06,070 聴衆2:おちびさんとのデフォルトは、 または変更できるものということですか? 956 00:51:06,070 --> 00:51:10,870 エズラZIGMOND:はい、そう ポートは、フラスコでデフォルトです。 957 00:51:10,870 --> 00:51:13,061 あなたはせずに、それを実行した場合 何も指定して、 958 00:51:13,061 --> 00:51:14,310 それが自動的にそれを行います。 959 00:51:14,310 --> 00:51:16,060 私は私が持っているだろう、と考えています doubleにこれを確認、 960 00:51:16,060 --> 00:51:19,130 しかし、あなたは、app.runであることを指定することができます 私はあなたのような何かを行うことができると思います、 961 00:51:19,130 --> 00:51:19,629 ポート= 8080。 962 00:51:19,629 --> 00:51:22,375 963 00:51:22,375 --> 00:51:23,750 それでは、実際に素早く試していることを挙げてみましょう。 964 00:51:23,750 --> 00:51:29,100 965 00:51:29,100 --> 00:51:32,230 うん、だからあなただけ指定することができます ポート= 8080は、それは、そこにそれを実行します 966 00:51:32,230 --> 00:51:36,130 私はあなたがそれを実行したい場合、これだと思います IDE上で、私は、これを試していません 967 00:51:36,130 --> 00:51:38,527 しかし、私はどうかと思います ポート8080でそれを実行し、 968 00:51:38,527 --> 00:51:40,360 おそらくことができると思います サーバーにアクセスするには、 969 00:51:40,360 --> 00:51:41,870 ちょうどあなたがウェブサイトのためだったような。 970 00:51:41,870 --> 00:51:44,390 >> うん、それは簡単です もしあなたことを変更します 971 00:51:44,390 --> 00:51:48,540 以下のようなポート転送の任意の並べ替えを持っています あなたがする必要があるもの。 972 00:51:48,540 --> 00:51:50,410 >> その他の質問は? 973 00:51:50,410 --> 00:51:50,916 うん? 974 00:51:50,916 --> 00:51:53,416 聴衆1:だから、私はあなたで見ました あなたが述べたように、モデル、 975 00:51:53,416 --> 00:51:55,647 あなたが指定する必要があります 各オブジェクトのデータベース。 976 00:51:55,647 --> 00:51:58,105 あなたが知って起こるのか、ありません それはあなたの場合、それは本当に簡単にします 977 00:51:58,105 --> 00:52:03,210 SQLiteのデータベースの多くを持っているあなた 一つのWebアプリケーションで使用します、 978 00:52:03,210 --> 00:52:07,210 あなただけの束を指定できること モデル内の異なるもの? 979 00:52:07,210 --> 00:52:11,620 >> エズラZIGMOND:ええ、私を聞かせて 実際に素早くそれを開きます。 980 00:52:11,620 --> 00:52:17,570 だから、あなたはあなたが持っているしたい場合は、言っています 別の何かの束、多分 981 00:52:17,570 --> 00:52:22,670 いくつかのために、好きで、学生 その理由は、そのような何か? 982 00:52:22,670 --> 00:52:26,870 ええ、私はと思います まだあなたは、各モデル 983 00:52:26,870 --> 00:52:30,652 まだちょうど持っている必要があります それに割り当てられたデータベース、 984 00:52:30,652 --> 00:52:32,610 しかし、あなたが持っているしたい場合 異なるモデルという 985 00:52:32,610 --> 00:52:35,818 別のデータベース・オブジェクトが割り当てられています それに、あなたは間違いなくそれを行うことができます。 986 00:52:35,818 --> 00:52:43,070 だから、私は新しいを作成した場合、 このようなもの、 987 00:52:43,070 --> 00:52:47,000 そして今、これはその学生です 奇妙なブログ記事のように見え、 988 00:52:47,000 --> 00:52:49,390 私がいることを指定することができます データベースは、ここでdb_2をに等しいです。 989 00:52:49,390 --> 00:52:51,390 だから、私はそれがだと思います あなたがそれを行うことができます主な方法。 990 00:52:51,390 --> 00:52:54,560 991 00:52:54,560 --> 00:52:56,200 >> クール。 992 00:52:56,200 --> 00:52:58,410 その他の質問は? 993 00:52:58,410 --> 00:53:02,170 >> だから、ほんの少しを終了します ビット、ここでいくつかのリソースがあり、 994 00:53:02,170 --> 00:53:06,030 これらのスライドは、オンラインで掲載されます あなたが実際にこれらのリンクを得ることができます。 995 00:53:06,030 --> 00:53:08,500 最高のリソースが実際にあります フラスコのドキュメント 996 00:53:08,500 --> 00:53:09,930 そして、自分自身をピーウィー。 997 00:53:09,930 --> 00:53:12,940 彼らは本当によく書かれている、私は思います。 998 00:53:12,940 --> 00:53:18,180 そのため、フラスコのウェブサイトはここにある、と 彼らは、クイックスタートチュートリアルを持っています 999 00:53:18,180 --> 00:53:20,710 同様のウォークスルーします 物事私はウォークスルーものに、 1000 00:53:20,710 --> 00:53:23,560 しかし、あなたはレビューの任意の並べ替えをしたい場合 私が渡ったものの、 1001 00:53:23,560 --> 00:53:26,200 または、あなたは私が説明することを考えました 紛らわしい方法で何か、 1002 00:53:26,200 --> 00:53:28,390 彼らはそこに同じような例があるでしょう。 1003 00:53:28,390 --> 00:53:31,570 >> ピーウィーは、ドキュメントを持っており、 彼らは、クイックスタートチュートリアルを持っています 1004 00:53:31,570 --> 00:53:34,650 それが主なパラメータを乗り越えます あなたが使用したいということ。 1005 00:53:34,650 --> 00:53:38,900 だから、物事は私が話題 ユニーク、およびデフォルト値を指定して、 1006 00:53:38,900 --> 00:53:42,710 その分野の異なる種類の あなたはそれらのすべてがあるだろう、使用することができます。 1007 00:53:42,710 --> 00:53:44,690 >> また、あなたが持っている場合 おちびさんについての質問、 1008 00:53:44,690 --> 00:53:47,530 あなたは、stackoverflowの上に投稿 実際にピーウィーを作った男 1009 00:53:47,530 --> 00:53:49,500 行くと、時々、それらに答えます。 1010 00:53:49,500 --> 00:53:53,200 あなたが質問がある場合は、うまくいけば 彼はそれに答えることができるでしょう、 1011 00:53:53,200 --> 00:53:54,867 彼は全体のことを書いたので。 1012 00:53:54,867 --> 00:53:56,700 私はそれがすべてだと思います 私がカバーしたかったです。 1013 00:53:56,700 --> 00:53:58,930 出てきてくれてありがとう。 1014 00:53:58,930 --> 00:54:02,688