
장고 설계철학으로 시작하는 파이썬 장고 입문
이진석
장고 개발을 위한 필수 파이썬 문법과 장고 설계철학에 대한 깊은 이해를 통해, 장고 웹개발을 제대로 시작해보세요.
초급
Django, Python
Python/Djangoを使ったウェブサービス開発の基礎をしっかりと固めましょう。Djangoの学習には時間がかかりますが、繰り返しの開発の中で皆さんの生産性を最大化できます。皆さんの想像を現実のものにしてください。
Django 4.2を基準にした生産性の高いウェブサービス開発
Djangoを活用したデータベーススキーマ管理
よくある移行失敗の事例
Django ORMであるモデルとモデルフィールドに対する深い理解
Django 중심의 웹 컴포넌트 개발 및 활용
Django Formを活用した生産性の高い入力フォーム処理
Djangoのデフォルト認証に対する深い理解
django-rest-framework を活用した生産性の高いウェブ API 開発
Web APIでのセッション認証の活用方法
Webフロントエンド開発のための最新JavaScript文法
React v18 必須理論
Django/React統合とサービス開発
Django/Next.js統合とセッションクッキーを活用した認証
Linux仮想マシンでのDjango/Reactサービス配布
🔥既存のPython / Django Webサービス開発完全ガイドとリアクト講義はDjango 3.0ベースであり、この講義はリニューアルレッスンとしてDjango 4.2 LTSベースです。単なるリニューアルではなく、ジャンゴの強力さを理解し、実務に応用できるように、全体のカリキュラムを着替えて再構成しました。以前の講義はもう販売していません。もし以前の講義が必要な方はhelp@pyhub.krアドレスにメールしていただければご案内いたします。
✅講義中に理解が難しい部分がありましたら、気軽に質問を残してください。質問を長く悩まされると、むしろ学習に邪魔になります。あなたの質問があなたの学習を完成させます。
Django開発の最適なIDEはPyCharm Professional(有料ツール)です。講義中の開発環境設定では、PyCharm ProfessionalとVisual Studio Codeについて説明しますが、講義の進行はPyCharm Professionalに進みます。 PyCharm開発会社JetBrainsから6ヶ月のクーポンを後援しました。本講義を受講後、下記の方法でお申し込みいただけます。
講義受講後にGoogleフォームを作成してクーポンを申請してください。クーポンは1人1回申請可能です。
毎週金曜日の夜に先着順にお申し込みいただいたメールでクーポンをお送りします。来週月曜日までに受け取らなかった方はメールでお問い合わせいただければ、返信で再送信させていただきます。最近、電子メールが頻繁に欠落しています。
学生/教師の方は、JetBrainsの学生支援プログラムを通じて、JetBrainsのすべてのツールを1年単位でサポートすることができますので、ぜひお申し込みください。
受け取ったクーポンはすぐに登録してください。そうしないと、JetBrainsからもはやクーポンのサポートを受けられなくなります。クーポンをご利用の方のみお申し込みください。
流行は回って回りますが、Web開発の本質は変わりません。クライアントサイドレンダリングのためのリアクトやVueのような技術が人気を集めました。これらの技術は、Webアプリケーションのユーザーインターフェースをよりダイナミックでレスポンシブにしました。その後、サーバーサイドレンダリングのためのNext.jsのような技術が注目され始めました。これらの技術はまったく新しい技術ではなく、10〜20年前に流行していた技術が現代的な方法で再解釈され発展したのです。
過去には、PHPやASPなどの技術でサーバーサイドレンダリングを多く使用していました。彼らはWebページの内容をサーバーで事前に作成してユーザーに渡す方法でした。現在の技術、例えばNext.jsも本質的には、サーバー上でページをレンダリングしてユーザーに提供するのと同じ原理に従います。しかし、現代の技術はより効率的であり、ユーザーエクスペリエンスを向上させることに焦点を当てています。
ファッションよりも本質に集中することが重要です。 Djangoはこの原則によく従う例です。 2005年以来絶えず進化し改善されてきたDjangoは、より良いWebアプリケーションをより高速で少ないコードにするのに役立ちます。 Djangoはフルスタックフレームワークで、効率的な開発プロセスと強力な機能を提供し、Web開発の本質的な要件を満たします。したがって、Web開発の傾向が変わっても、Djangoの価値は続くでしょう。
Webサービス開発の基礎から応用、
配布までしっかり積みたい方
簡単なHTMLコード作成から始めて、Webページ開発、Webコンポーネント開発、API開発、Linuxサーバーの展開まで!
Djangoの高い生産性
体験したい方
英語を韓国文化ではなく英語文化として理解しなければならないように、ジャンゴもジャンゴ哲学と文化を理解して活用しなければ、高い生産性を経験することができます。
Djangoを中心にさまざまなWeb
フロントエンド統合が気になる方
最新のDjangoトレンドに合わせて、さまざまなWebフロントエンドを統合する方法をお知らせします。
このレッスンは、あなたがDjangoを正しく理解し、効果的に活用できるように設計されています。 Djangoの設計哲学を深く伝えたいと思います。 Djangoの重要な設計哲学のいくつかを見て紹介します。
まず、Djangoはできるだけ少ないコードを使用して簡潔さを追求します。不要な規則や固定コード方式は避けてください。これにより、開発者が必要な機能をより迅速かつ簡単に実装できるようになります。
第二に、現代のWebフレームワークは開発速度の向上に焦点を当てています。 Djangoはこの目標を達成するように設計されており、迅速なWeb開発を実現します。これにより、開発者は時間を節約し、生産性を向上させることができます。
第三に、冗長性は避け、正規化は追求します。 「Don't Repeat Yourself(DRY)」の原則によれば、Djangoは繰り返し作業を減らし、最小限のコードで最大限の機能を実装することをお勧めします。これにより、開発プロセスがより効率的でメンテナンス管理が容易になります。
これらの哲学は、DjangoがWeb開発をより効果的かつ簡単にするのに重要な役割を果たします。この講義を通して、Djangoの強力な機能と哲学を深く理解してください。
リアクトとNext.js技術が人気だからといって、サービスのすべてのページをリアクトとNext.js技術で開発する必要はありません。リアクトとNext.js技術が効用のあるページに集中して開発し、その他のページではジャンゴ技術で生産性高く時間を惹きつけ、Webサービスを素早く開発できます。選択と集中です。
Djangoを中心に迅速にWebサービス開発を開発する方法を学び、Djangoを中心にさまざまなWebフロントエンド技術を統合する方法を学びます。これにより、さまざまなWeb開発ニーズに対応できる柔軟で効率的なアプローチを提供できます。この講義により、バックエンドとフロントエンドの両方で強力な技術的基盤を構築するために必要な知識と経験を得ることができます。
すべての理論の章で使用されているスライドは、長年の講義を行っている間にトリミングされ、洗練されたスライドです。 PDFファイルでもご提供いたしますので、手書きしながら講義を受講してください。
参考にすれば良い公式文書リンクも入念にPDF文書内に追加しておきました。関連公式文書は、間に合うたびにお読みください。本講義でジャンゴのすべての内容を扱うことはできません。 Djangoは公式文書が本当に整っています。公式文書に答えがあります。公式文書を読む習慣を教えてください。そうしてこそ、実力が速く跳ねます。
各講義は10分内外の短い長さで構成されており、皆さんが集中力を維持して学習することができます。
あらかじめ作成されたスクリプトに基づいて録画を行い、講義の不要な部分はすべて編集中に削除しました。これらの短い形式のレッスンは、時間を効率的に使用するのに役立ちます。準備と編集にはかなりの時間と労力がかかりましたが、これは一人の投資が数千、数万人の学習時間を節約し、学習効率を高める結果をもたらします。
コードの練習では、そのコードをまずずっと説明した後に実習を続けます。練習しながらコードを説明するよりも、まず説明を聞いて実習を進めるにあたってコードに対する理解も上昇に大きな助けになるでしょう。
開発講義の性質上、練習コードを入力するのに多くの時間がかかり、誤字が発生することがあります。直接入力してエラーを受けて学習するのは理想的ですが、このプロセスは時々非常に難しいことがあります。だから、あなたがより簡単に練習に従うことができるように、各レッスンのビデオの下のレッスンノートに練習コードリンクを提供します。これにより、コードをコピーして貼り付けることができ、時間を節約し、ミスを減らすことができます。
また、講義ごとにコミット単位でコードリンクを提供します。これにより、講義内容と異なる動作をするコードがある場合は、すばやく確認して修正することができます。これらのリソースは、講義をより効果的に従い、スムーズに学習するのに役立ちます。
"""開発環境の構築方法を正しく理解して設定し、講義を円滑に進める準備をします。"""
Python / Django Web開発の第一歩を始めるためには、シームレスな開発環境を構築することが不可欠です。このセクションでは、WindowsとMacのユーザーの両方が、Python、Django、Pytrum、Terminalなどの開発ツールを正しくインストールして設定できるようにします。開発環境設定は比較的簡単に見えるかもしれませんが、いくつかの重要なポイントを見逃すと、設定に数日間かかることがあります。まるで職人がツールを精巧に整え、よく管理しなければ最高の成果を生み出すように、開発者も自分のツールをうまく設定して最適な状態に保つことが重要です。このセクションでは、受講生の皆さんが講義や実習を円滑に進める環境を整えることになります。
「静的ウェブから動的ウェブへの流れを感覚的に習得し、ウェブ開発の全体的な大きな図を理解しています」
本格的なDjango Web開発に入る前に、基礎Web開発要素を素早く練習してみて、感覚を捉える体験段階です。静的Webページから始めて動的Webページに進化するプロセスを簡単に体験しながら、 Webの基本コンポーネントがどのように接続されているかを大きな図を感じてください。詳細な内容を毎日覚えようとするよりも、Web開発の流れを感覚的に身につけることが目標です。
まず、Word文書で生成されたHTML文書から出発し、簡単なJavaScriptを追加して対話を実装し、Webサーバーを介してHTMLをサービスする過程を取り上げます。
その後、単一のファイルで構成されたDjangoプロジェクトを通じて、Djangoの基本概念を味わったり、外部データを呼び出してHTMLに出力したり、検索機能を追加したりするなどの動的Webページ要素を素早く体験します。
また、データベースに保存されている情報に基づいてHTMLレスポンスを生成し、SQLインジェクション(SQLインジェクション攻撃)などのセキュリティ上の脅威に対処し、Bootstrap 5とTailwind CSSでWebページのスタイリングを改善する方法を紹介します.
最後に、サーバーサイドレンダリングとクライアントレンダリングの違いを比較し、それぞれの特徴と長所と短所を簡単に理解するのに役立ちます。
"""Djangoの基本的なアプリとコア機能を体系的に理解し、Djangoの真の価値を知り、効率的な開発方法を模索します。"""
Djangoの生産性を最大化する重要な機能と基本的なアプリをレビューします。 Djangoが提供する主なツールを体系的に理解することで、単にモデルとビューコードのみをコピーして使用するレベルを超えて、Djangoの真の価値を理解するのを助けることが目標です。
ジャンゴを単にリスト/生成/修正ページ作成ツールでしかアクセスするのではなく、ジャンゴが持つ機能と哲学を理解し、開発過程で時間と労力を節約する方法を提示します。まず、Djangoの基本的な15のアプリを見て、それぞれのアプリが実際のプロジェクトでどのような役割を果たし、どのような状況で役に立つかを学びます。
次に、Djangoの14の重要な機能をサンプルコードで深く探索します。このプロセスは単に機能をリストするのにとどまらず、DjangoがWeb開発でどのように書くことができるかについて全体像を得るように構成しました。
このセクションでは、Djangoの構造と機能を理解し、Djangoが持つさまざまな可能性と価値をより深く理解するのに役立ちます。
"""メロンデータを活用した簡単な検索サービスにより、Djangoのコア機能を感覚的に習得し、Django Web開発に自信を持っています。""
Django Web開発の重要な機能を実践する2番目の「ウォーミングアップ」ステップです。メロンTOP100音楽データを活用して簡単なデータ検索サービスを作成しながら、ジャンゴの実戦機能を体験します。このプロセスにより、Djangoの機能がWebアプリケーションでどのように実装されているかを感覚的に理解することができます。
この演習では、カスタムコマンドを使用してデータベースにデータをロードし、モデルを介して照会する方法について説明します。また、Djangoの管理機能を活用してデータを管理する方法も実践しています。
2回のウォームアップを通じて初期の漠然とした恐怖を克服し、DjangoでWeb開発を始めるのに必要な自信を築くことを目指します。このセクションは、Django Learningの長期的な旅を始めるための強力な基礎になるでしょう。
"""関数ベースのビューとクラスベースのビューの違いと利点を理解し、リクエスト処理に適したビュー方式を選択して効率的に応答を生成する機能を備えています。"""
DjangoのView機能を使用して、さまざまなリクエストを処理して応答する方法を学びます。 ViewはDjangoアプリケーションのWebリクエスト/レスポンスフローを処理するための重要な要素であり、HTML、画像、CSV、Excelなどのさまざまなフォーマットでレスポンスを生成できます。
関数ベースのビューとクラスベースのビューの違いとそれぞれの利点を学び、どのような状況で適切に利用できるかを見てください。特に繰り返しのViewパターンが必要な場合は、クラスベースのビューを使用して設定に近いコードで要求を処理できます。しかし、すべての状況にクラスベースのビューが適しているわけではありません。関数ベースのビューとクラスベースのビューを適切に混合して使用することが重要です。
また、このセクションでは、クラスベースのビューのAPIを深く扱い、各クラスの構造を理解して活用する方法を学びます。クラスベースのビューは、その構造を十分に理解しないとアプリケーションが難しいからです。これを明確に理解することが不可欠です。
"""さまざまなデータベースとDjangoモデルの連携方法を理解し、SQLレベルでの動作を通じてDjangoモデルコードの実質的な動作原理を特定する"""
Djangoモデルを介してさまざまなデータベースを扱う方法を学びます。 Djangoモデルは、1つのPythonコードでSQLite、PostgreSQL、MySQL / MariaDB、Oracle、SQL Serverなどのデータベースに関連付けることができます。各データベースとDjangoプロジェクトを接続する設定方法をコードで扱い、データベース連携の理解を助けます。また、Docker(Docker)を介してPostgreSQLとMySQLデータベースを作成し、これをDjangoプロジェクトと連動する実習を通じて、実戦環境でのデータベース構成を体験してみます。
Djangoがネイティブに提供するさまざまなモデルフィールドの用途とサンプルコードも一緒に説明し、各フィールドが実際のデータベースにどのように保存され利用されるかについての理解を高めます。
最後に、モデルマネージャを介してクエリセットオブジェクトを作成し、データベースクエリを実行するプロセスをdjango-extensionsライブラリを使用してSQLレベルで確認します。これにより、Djangoモデルコードが実際にどのように動作するかについての理解を高めることができます。
"""ジャンゴの移行の基本概念と活用法を習得し、データベーススキーマを効率的かつ安定的に実行できる基盤を整える"""
移行はデータベース構造をPythonコードで管理し、 Djangoモデルの変更をデータベースに簡単に反映するのに役立つDjangoの重要なツールです。移行機能がないと、データベーススキーマを手動で管理する必要があります。これは面倒でエラーが発生しやすく、プロジェクトが複雑になるほどメンテナンスに大きな困難をもたらします。スキーマを直接管理する方法では、さまざまな修正を手動で毎日反映する必要があるため、モデルが変更されるたびにさまざまな部分で矛盾やエラーが発生するリスクが高くなります。
マイグレーション過程を理解せずに単に命令だけを機械的に実行することが多く、マイグレーション失敗時に対処が難しく、混乱が発生する状況も頻繁です。いくつかは、このような失敗の経験によって、移行は単純な状況のみをカバーすることができ、複雑な状況では使用できないという誤解を招くこともあります。このセクションでは、移行の理解を深めるために、次の内容について説明します。
Pythonコードにデータを移行するための基本的な概念と関連する命令を学びます。
郵便番号CSVデータを例として、実際のデータをデータベースに転送するプロセスを経験し、移行を実践します。
大量のデータを効率的に移行する方法を説明し、大規模なデータ環境でも安定した移行を可能にします。
一般的な移行失敗の3つのケースを分析し、エラーを防止し、問題が発生した場合に効果的に対処できる実践的なヒントを提供します。
"" "Djangoモデルを使用して実際のビジネスニーズを反映する方法を学び、さまざまなデータベース制約を介してデータ管理とパフォーマンス最適化の基礎を固める"""
実務で発生する可能性のあるさまざまな要件を Django モデルとして実装できる技術を学習します。基本モデルフィールドに加えて、特定のビジネスニーズに合わせたカスタムモデルフィールドとデータベース制約をカバーし、Djangoモデルの柔軟性とスケーラビリティを体験できます。
このセクションの主な内容は次のとおりです。
基本モデルフィールド:Djangoが提供する基本モデルフィールドを学習し、各フィールドの特性と用途を整理します。
カスタムモデルフィールドの開発方法:基本フィールドでは表現できない特別なデータ型を格納するためにカスタムモデルフィールドを開発する方法を学びます。たとえば、数値として格納するIPフィールドと、Y / N文字列として格納する真の偽のフィールドを実装する例を使用して、カスタムフィールドを扱う基本を習得します。
さまざまなMetaオプション:インデックス、唯一の制約、プロキシモデルなどのMetaオプションを使用して、データベースの制約とモデルのプロパティを設定する方法を学びます。これにより、データの整合性を確保し、クエリのパフォーマンスを最適化する方法を理解できます。
"" "Djangoのフォーム機能を深く理解し、制約を克服して柔軟性を高める方法を学びます。HTML入力フォームの作成と検証プロセスを統合的に処理する能力を備えています。""
Form処理はリアクトのようなフロントエンドフレームワークでも多くの開発工数が入る作業ですが、Django FormはHTML入力フォーム作成から検証まで統合的に処理でき、開発生産性を大幅に高めます。また、バックエンドでの検証は必須なので、サーバーでも徹底的にユーザー入力値を検証する方法を学びます。フォーム処理に必要なさまざまなセキュリティ機能はおまけです。
Django Formは強力ですが、やや柔軟性が不足しているという認識があるのも事実です。しかし、そのような制約を克服し、より柔軟に活用できる方法を一緒に取り扱い、ジャンゴフォームの活用度を高めるのを助けます。必要に応じて、HTML入力フォームの作成はDjango Formに依存せずに直接作成することもできます。リアクトのようなフロントエンドフレームワークでも、Django Formを活用してフォーム処理の工数を大幅に削減できます。
このセクションで扱う主な内容は次のとおりです。
リクエストオブジェクトとレスポンスオブジェクト:HTMLフォームを介して受信したリクエストとそれを処理して応答するプロセスを理解します。
CSRF防御:Djangoでデフォルトで有効になっているCSRF(サイト間要求偽造)攻撃防御について説明します。すでに提供されている優れたセキュリティ機能をオフにしないでください。
フォーム検証:フォームを活用して入力値に対して効率的に検証を実行し、エラーメッセージを応答し、検証に合格した正しい値のみを処理する方法を説明します。
Django FormとModelForm :Django Formを活用すれば、好みに合わせてフォームを整理できます。モデル構成で入力フォームを構成することがよくあります。このときModelFormを活用すれば、フォームフィールドを毎日定義しなくても、モデル構成に合わせてフォームを構成できます。 FormとModelFormの違いを理解し、実際にそれぞれをどのように活用するかを見てください。
フォームフィールドを見てカスタムフォームフィールド/ウィジェットを開発する:さまざまなフォームフィールドを学び、必要に応じてカスタムフォームフィールドとウィジェットを開発してカスタム入力フォームを実装し、Pythonベースの入力フォームフィールド/ウィジェットの再利用性を向上させます。
Pythonコードでフォームレイアウトを設定する:さまざまなフォームレイアウトを設定するために直接HTMLに触れる必要はありません。 Pythonコードだけでさまざまなレイアウトを構成する方法を見てください。
複数のフォーム要求を一度に処理する:ユーザーから受け取る1つの入力フィールド構成はその時点で変更でき、複数のフォーム要素を一度に入力する必要がある場合があります。一度に複数のフォーム値を一度に処理する方法を学び、複雑な入力要求を効率的に処理する方法を見てください。
"""Django認証システムの基本的な構造と実装方法を深く理解し、応用することができます。"""
Webサービスの必須要素である認証機能を深く実装してみて、ジャンゴの基本認証システムを一つずつ実装していく過程を学習します。認証はセキュリティとユーザー管理に不可欠な機能です。これを正しく理解して実装することが重要です。
まず、Webサービスの認証方法を理解するために、クッキーとセッションの原理を学習し、これに基づいてDjangoでの認証フローを設計します。その後、Djangoの基本認証機能を底から実装してみて、それぞれの機能がどのような役割を果たし、どのように動作するかを直接経験します。この過程を通じて、様々な既存サービスにもジャンゴ認証を応用し、容易に接木する能力を備えています。
このセクションの主な内容は次のとおりです。
クッキーとセッションの理解:クッキーとセッションの基本的な概念と役割を理解し、Webサービスでの認証がどのように行われるかを基礎にします。
Django認証機能の実装:ログイン、会員登録、ログアウト、パスワードリセット要求、確認などのコア認証機能を最下部から実装します。これにより、Djangoの認証システムをより深く理解することができます。
Djangoの基本権限ポリシー:Djangoが提供する権限ポリシーを見て、認証に加えて、ユーザー権限管理などの追加のセキュリティ機能を学びます。
"" "Djangoを中心にフロントエンド技術を効果的に使用する方法を学び、コンポーネントベースの開発を通じてより効率的でメンテナンス性の高いWebアプリケーションを実装する能力を備えています。""
効率的で再利用性の高いDjangoテンプレートベースのコンポーネントを開発する方法を学びます。 Djangoテンプレートに基づくフロントエンド開発技術により、JavaScriptに頼ることなくインタラクティブなWebページを実装でき、メンテナンス性と再利用性を最大化できます。
このセクションで扱う主な内容は次のとおりです。
JSレスHTML Webフロントエンドの開発:JavaScriptなしでHTMXを活用してインタラクティブなWebページを構成する方法を学びます。
Djangoテンプレートを使用したコンポーネントの開発:Djangoテンプレートに基づいて再利用可能なコンポーネントを開発する方法を学び、プロジェクト内での一貫性とメンテナンス性を高める方法を学びます。
django-componentsライブラリを使用したコンポーネントの開発:django-componentsライブラリを使用して、より良いモジュール化と再利用性をサポートするコンポーネントを実装します。
"" "Djangoの複数のライブラリを組み合わせて実際のWebサービスを構築する経験を積んで、実務に適用できるさまざまな機能を直接実装してみて、Django中心のフルスタックWeb開発能力を備えるようになります。"""
Djangoを中心にフォトログWebサービスを開発し、 Djangoが単純なAPIではなく、フルスタックWebフレームワークとして提供する強力な機能を活用してみます。プロジェクト作成と初期設定から始めて、ジャンゴと様々なライブラリの相乗効果を引き出しながら、実際のサービスを床からじっくり完成していきます。
このセクションで扱う主な内容は次のとおりです。
Djangoとdjango-crispy-forms、htmxとの究極の相乗効果
画像マルチアップロードの実装:複数の画像を一度にアップロードする機能を追加して、ユーザーフレンドリーな画像アップロード環境を実装します。
Pillowライブラリを使用した画像の最適化:Pythonでは、Pillowライブラリを利用してさまざまな画像処理を軽減できます。設置も簡単です。 Pillowライブラリを活用して画像をリサイズしてJPEGに変換し、画像容量を最大98%まで削減する最適化方法を取り上げます。
django-taggitライブラリによるタグのサポート:タグ機能を追加して、コンテンツを効果的に分類して検索できるようにします。
さまざまなコンポーネントの開発:modal-form、image-overlay、carouselなどのコンポーネントを開発し、インタラクティブなユーザーエクスペリエンスを提供します。
HTMXとモーダルを積極的に活用したコメントの実装:htmxとモーダルを積極的に活用して、コメント機能を効率的に開発し、ユーザーインターフェイスを改善します。
ユーザーフォローイングの実装:ユーザー間フォロー機能を実装し、基本的なソーシャル機能を備えたフォトログサービスを完成します。
"" "Django サービスを Linux 環境に安全にデプロイする技術を習得し、AWS Lightsail インフラストラクチャで実際のサービス運用環境を構築および管理する能力を備えています。"""
ほとんどのWebサービスはLinux環境で動作するため、Linuxベースの展開とサーバー管理技術はWeb開発者にとって不可欠な機能です。このセクションでは、Djangoサービスを実際の運用環境に確実に展開するための設定とアーキテクチャの構成について学びます。
AWS Lightsailを中心に説明していますが、このプロセスでは、習得した設定とデプロイ方法を他のLinuxサーバー環境にもほぼ同じように適用できます。
このセクションで扱う主な内容は次のとおりです。
ローカルネットワーク設定:外部サーバーに展開することなく、開発段階で携帯電話などのデバイスから開発サーバーに接続できる方法を説明します。これにより、ローカルネットワーク環境でテストする技術を習得し、開発中でもさまざまなデバイスで簡単に確認できます。
サービスアーキテクチャ:Webサービス展開の基本的なアーキテクチャを紹介し、サーバー構成と役割分担を理解します。
Ubuntu Linux仮想マシンへのDjangoサービスのデプロイ
Python最新バージョン3.12をインストールし、展開環境を設定する方法を学びます。
nginxを介したリバースプロキシと静的ファイルサービング:nginxを介してWebリクエストに応じてWebトラフィックを効果的に分割して処理する方法を学びます。
エラーログと管理者の電子メールの送信:サービスエラーを管理者がすばやく認識できるように、管理者の電子メールを設定する方法を学びます。
エラーロギングサービスSentry:エラートラッキングサービスSentryと連動し、リアルタイム監視を通じてサービス管理性を高めます。
Amazon Lightsail仮想マシンとデータベースを使用したデプロイ:AWSベースの信頼性の高いデプロイ環境を構築します。
"""django-rest-frameworkの機能を総合的に理解し、効率的で生産性の高いWeb APIを構築する実務能力を備えています。""
DjangoでWeb APIを開発するために広く使用されているライブラリはdjango-rest-framework(以下DRF)です。 DRFを活用して生産性の高いWeb APIを開発する方法を学びます。 DjangoがWebページ開発に最適化されたさまざまな機能を提供するように、 DRFはWeb APIの開発に必要な機能を体系的にサポートして繰り返しを減らし、Web APIの構築を効果的に支援します。
このセクションで扱う主な内容は次のとおりです。
APIView : API リクエスト処理の中心となる APIView の基本的な構造と動作方法を理解します。
Mixin : クラス継承文法を活用した機能で、これにより複数の DRF APIView を組み合わせて設定に近いコードで多様なシナリオをサポートすることができます。コードの再利用性を高め、共通機能を簡単に追加する方法を学びます。
ModelViewSet :CRUD(生成/照会/修正/削除)API実装の総合ギフトセットとして、必要なCRUD機能を自由自在に組み合わせて使用できます。継承プロセスを調べて、さまざまな継承の組み合わせで複数の機能を簡単に実装できる方法を学びます。
レンダラー:APIサーバーはJSONフォーマットだけでなく、画像、Excelファイル、PDFなどの応答も必要です。同じ内容の文書でも、状況に応じてExcel、Word、Word、下アハングル形式の文書が必要なようです。 DRF Rendererを使用して、さまざまなフォーマットのAPIレスポンスを再利用可能にする方法を学びます。
シリアライザー:Diergo Formの役割をシリアライザーで担当します。データ検証と変換を効率的に処理する方法を学びます。
認証と権限:APIセキュリティを講じる認証と権限を学習し、ユーザーアクセス制御を実装します。
pytest テスト: pytest を活用した API テスト方法を扱い、API が意図したとおりに動作することを検証する方法を学びます。
ページング:データベーステーブル上のデータを一度に照会しません。ページサイズを指定してページ単位で照会するようになります。 DRFがサポートする3つのページング方法を見てください。
"""Web APIに適したセッション認証方式を理解し、効率的に認証を実装できる実務能力を備えています。"""
多くの人がWeb APIでは当然JWT認証を使用する必要があると思いますが、 JWT認証は得よりも実が多く、実際の運用環境ではセッション認証がより信頼性が高く、適切な選択です。 Djangoがネイティブに提供するセッション認証により、APIリクエストでセキュリティと効率を向上させる方法を学びます。
セッション認証を活用すれば、あえてリアクトSPA(Single Page Application)開発でもログインなどの機能を実装する必要はありません。 Djangoですでに実装されている機能を活用し、ビジネスの実装に集中してください。
このセクションで扱う主な内容は次のとおりです。
セッション認証とJWT認証の比較:セッション認証とJWT認証の長所と短所を比較して、Web APIに適した認証方法を理解します。
Web API リクエストでセッション認証を活用できる設計: セッション認証を活用して、リアクト SPA (Single Page Application) からの Web API 要求を安全に処理できる設計方針を学習します。
Django / Next.js統合とセッションCookieを使用した認証:DjangoとNext.jsを統合して、JWTなしでセッション認証を利用する方法を学びます。
"""リアクトの重要な概念を学び、それを活用して、Djangoテンプレートでも利用可能なDjangoテンプレートコンポーネントを実装する方法を学びます。"""
リアクトは単にUIライブラリであるだけで、リアクトを使うからといってフロントエンドを必ずSingle Page Applicationで構築しなければならないことは絶対ではありません。
リアクトは強力なフロントエンド技術ですが、開発コストが高いです。また、サービスの機能中に80%以上リアクトがあえず必要ない機能も多いでしょう。すべての機能開発にリアクトを使用するよりも、コア機能だけに先のともにリアクト技術を適用し(さらにコア機能もリアクトが必要ない場合もあります。)、そのコア機能を細かく整える時間を作るために、ジャンゴ中心のフロントエンド技術を積極的に活用すればその時間を十分に作り出すことができ、大体の機能を。最大の費用は時間です。
この観点から、バックエンド開発者がリアクト技術を理解し、リアクトが必要な機能にのみリアクトを適切に活用できるように、このセクションを設計しました。
CRAとParcelバンドラを利用したリアクトプロジェクトの作成
純粋関数とJSX :リアクトコンポーネントの核心である純粋関数の概念と、JSXを活用した宣言的UIの作成方法を学習します。
ステータス値、属性値、イベント処理:リアクトでは、ステータス値と属性値を使用して状態を管理し、ユーザーの対話をイベントとして処理する方法を学びます。
コンポーネントCSSの作成方法:ModuleとSassを活用してコンポーネントにスタイルを追加する方法を学びます。
immerを利用した簡単な不変値オブジェクトの取り扱い:リアクトでは不変オブジェクトの処理が必須です。 JSの基本機能だけでは不変オブジェクトの処理が面倒です。 immerで簡単に不変値を処理する方法を学びます。
Foldパターンとリデューサー、そしてグローバル状態管理:リアクトコンポーネントがページ内で占める比重が大きくなるほど、グローバルサンセット値管理が不可欠です。グローバルサンセット値管理を効率的に処理する1つの方法として、Reducerを習得します。
Axiosを使用したWeb APIリクエスト:Webベースでもfetch APIを介してHTTPリクエストを送信できますが、さまざまな利便性が強化されたAxiosライブラリを活用してWeb APIリクエストを行う方法を見てください。
ルーターでSPAを作成する:シングルページアプリケーションでは、必然的にリクエストURLに合わせて複数の画面を表示する必要があります。リアクトルータライブラリを活用して、リクエストURLに合わせて他のリアクトコンポーネントを表示する方法を学びます。
リアクトでDjangoテンプレートコンポーネントを作成する:リアクトはUIライブラリにすぎないため、Webページ内のどこでも使用できます。 Djangoテンプレートで利用可能なリアクトコンポーネントを作成する方法を学びます。
"" "先に開発したDjangoプロジェクトとリアクトアプリケーションを統合し、それぞれの利点を活かしながら柔軟で効率的なWebアプリケーションを実装します。"""
リアクトでフォームを設計し、フィールドのステータス値を管理し、エラーメッセージを処理する開発は多くの空手が必要な作業です。複雑なフォームが必要な場合はリアクト段で処理することもできますが、ほとんどの場合、DjangoのForm機能を活用すれば開発工数を大幅に削減できます。
このセクションでは、状況に応じてジャンゴフォームを活用し、リアクトでは簡単にアドレスのみを指定してモーダルフォームを実装する方法を学び、ジャンゴとリアクトの調和を最大化する方法を習得します。
各セクションで扱う主な内容は次のとおりです。
APIと一緒にToDoリストCRAアプリケーション:DjangoのAPIとリアクトアプリケーションを組み合わせてToDoリスト管理機能を実装します。これにより、バックエンドとフロントエンドが有機的に接続されている構造を理解できます。
Django / React Hybrid方式でToDoモーダルフォームを実装する
リアクトとDjangoフォームを統合してモーダルフォームを実装します。特にリアクトでDjangoフォームのページアドレスのみを指定してフォームを完成する方法で、Djangoフォームの生産性を最大化しながらもリアクトのインタラクティブなUIを活用できるようになります。
"""Djangoのさまざまなキャッシュ戦略を理解し、サービスパフォーマンスを最適化するための実用的なキャッシュ使用法を学びます。""
DjangoのキャッシュAPIを活用してデータベースの負荷を軽減し、サービスの応答速度を向上させる方法を学びます。キャッシュはデータ要求を効率的に処理し、応答時間を短縮し、システムリソースを節約するのに役立ちます。
しかし、キャッシュは「両刃の剣」のように、誤った設定が管理がむしろデータの最新性を低下させ、予期しない問題を招くこともあります。キャッシュを効果的に活用しながらも、キャッシュの潜在的なリスクを理解してみる時間になります。
このセクションで扱う主な内容は以下のとおりです。
キャッシュ Low レベル API の活用: Django の低レベルキャッシュ API を使用して、キャッシュの基本動作を理解します。
さまざまなキャッシュバックエンド(メモリ、memcached、redis):さまざまなキャッシュバックエンドを比較して、各バックエンドの長所と短所を特定します。
キャッシュキーを構成するロジック分析:キャッシュキーを構成するロジックを分析して、キャッシュのヒット率を最適化する方法を学びます。
django-debug-toolbarによるキャッシュの確認:内部キャッシュ動作をdjango-debug-toolbarで確認し、問題をデバッグする方法を学びます。
同じ値、異なる順序のクエリパラメータを並べ替えることで、キャッシュヒット率を上げる方法:同じ値を持つが順序が異なるクエリパラメータについては、異なる場所にキャッシュが格納されます。クエリパラメータをソートしてキャッシュヒット率を上げる方法を学びます。
レディスとdjango-redisキャッシュバックエンドを活用したキャッシュ一括削除方法:レディスとdjango-redisライブラリを活用して、大規模なデータや特定の条件に合ったキャッシュを効率的に一括削除する方法を学びます。
テンプレートキャッシュを削除する方法:テンプレートキャッシュを手動で削除する方法を学び、キャッシュの更新が必要な状況にすばやく対応できるようにします。
"" "Djangoとリアクトを組み合わせたフルスタックアプリケーションをLinux環境に確実にデプロイする技術を習得し、実際のサービス運用に必要なセキュリティとドメイン設定を含む全体的なデプロイメント能力を備えています。""
AWS Lightsail インフラストラクチャを活用して、Django Web サービスとリアクト SPA フロントエンドを一緒にデプロイする方法を学びます。
このセクションで扱う主な内容は次のとおりです。
開発用/配布用の環境変数の分離:環境に応じて必要な設定を区別して、展開時に適切な環境変数を管理する方法を学びます。
デプロイメント・スクリプトによる簡単で簡単なサーバーのデプロイ: サーバーのデプロイメントを自動化するデプロイメント・スクリプトを作成し、サーバーに簡単に簡単にデプロイする方法を学びます。
nginxでCRA配布ファイルを設定する方法:Create React APP(CRA)でビルドされたリアクトファイルをnginxでサービングするように設定し、リアクトアプリケーションを確実に配備する方法を学びます。
学習用サブドメインのサポート:サービス運営にはドメインが必須です。ドメインがなくても学習用に使用できるドメインをサポートします。
HTTPS 証明書とドメインの連携: HTTPS 証明書を適用してセキュリティを強化し、ドメインと連携して本番レベルの展開を完成させます。
Q. 非専攻者も聞ける講義ですか?
関数/クラス/装飾者/ジェネレータなどのPython文法を理解しておらず、数十行のPythonコードを書いてみたら十分に従うことができる講義です。もちろん一度聞いて実習して理解できないでしょう。初めて接する分野を一度に理解するような人はいません。とても気にしないでください。見知らぬ分野を学習するのだから当然です。正確な方向性を持つ努力は裏切られません。学習し、Python/Djangoについて質問がある場合は、いつでも質問を残してください。私も一緒に悩みましょう。一緒に成長します。 ;-)
Q. Pythonは入門者向けの言語ではありませんか?
Pythonは他の言語よりも読みやすく、短いコードで多くの作業を効率的に実行できます。国内でPythonが人気を得たのはそれほど長くはありませんが、海外では十数年前からすでにメジャー言語であり、ウェブを含む様々な分野で活発に使用されています。
そしてPythonは遅くはありません。英語を正しく知らずに使用すると、コングリッシュになるように、Pythonを正しく理解できず、使用されたPythonコードを効率的にしません。 Pythonをよく理解して使用すると、すぐに動作するコードをすばやく開発できます。 C言語で開発したコードがすべての場合に素早く動作すると言えますか?ゆっくり動作するように開発すると、ゆっくり動作するようになります。そしてPythonがCPU演算では遅いですが、高速CPU演算が必要な部分はC/C++/Rustなどで開発したPythonライブラリが解決してくれます。 numpyのようなライブラリです。だから、Pythonを活用してデータ分析と機械学習をするのでしょう。 :-) 実際、カカオの数多くの機械学習APIはPythonで開発されています。 (注: [YouTube - PyCon Korea]推奨システムのためのアプリケーションサーバー開発のレビュー@kakao )
さらに、Python 3.11、3.12、3.13のバージョンが上がるにつれて、Pythonは著しく高速になっています。
Q. Djangoは学習費が高く、遅く、制約が多くないのですか?
Djangoは、2005年に公開されてから約20年の間十分に成熟したフレームワークです。 (スプリングは2003年に公開されました。)Djangoはバックエンドのフルスタックフレームワークです。
ジャンゴはジャンゴ一つで提供してくれる機能が多いだけです。機能が多いのが遅いという意味は絶対ではありません。各機能は1つの主体で有機的に管理され、最高の相乗効果があります。 FastAPIは強力ですが、機能は限られており、FastAPIは1つだけでWebサービスのすべての機能を実装することはできません。管理対象が異なる多数のライブラリのインストールが必要です。あれこれ設置してみると、ジャンゴ以上で塊が大きくなる場合が非日比在します。
Djangoの設計哲学の中で、最初のものは「緩い結合」です。 Djangoは利便性のためにフルスタックでさまざまな機能を提供しますが、各機能は独立性を持っています。必要な機能だけを抜いて使用することができ、さまざまなPythonライブラリと組み合わせることができます。
トスは1000人余りのトスチームメンバーを対象にサービスを作る「トスインターナル」という組織があります。この組織では、Djangoとリアクトでサービスを開発しています。 ( トスの関連採用発表:Server Developer(Internal Product) )トスインターナルチームはなぜDjangoとReactを選んだのですか?
Python / Djangoは、時間とコストが限られたチームでさらに時間を節約し、最高の生産性により、ビジネスに集中できるようにします。
オペレーティングシステムとバージョン(OS)
講義では、WindowsとMac環境の開発環境の設定について説明します。
Pythonとノードがインストール可能な環境であれば、どちらも可能です。
使用ツール:パイチャームプロフェッショナル(6ヶ月クーポン提供)、ドッカー
PostgreSQLとMySQLデータベースの迅速な作成にドッカーを使用します。 Dockerのインストールについては説明しておらず、Dockerコンテナの作成に必要なコマンドとdocker-compose.ymlファイルを提供しています。 Dockerのインストールが不可能なコンピュータでは、SQLiteデータベースを使用(推奨)したり、PostgreSQL/MySQLのインストールファイルをダウンロードしてインストールすることもできます。
デプロイは、AWS(Amazon Web Services)Lightsail仮想マシンにデプロイします。
AWSにサインアップするには、海外で支払うことができるクレジットカードが必要です。
デプロイの練習後、すぐにリソースを削除すると、AWSのコストは数百ウォン程度と予想されます。
AWSへの参加が困難な方は、VirtualBoxやParallels経由でローカルにUbuntu Linux仮想マシンを作成して実習を進めることができますが、講義の一部の内容が動作しない場合があります。動作しない、または詰まっている部分は質問残していただければご案内いたします。
各講義映像にPDF授業資料を提供します。
練習コードが長い場合は、講義映像の下の授業ノートにソースコードをコピーできるリンクを提供します。
各実習のコミットリンクを講義映像の下の授業ノートに提供します。
このレッスンの内容は、知識の共有者に著作権があります。学習目的でブログに学習した内容を一部共有することは大丈夫ですが(出典を必ず明かしてください。)、専門を共有したり商業目的で活用することは不可能です。
学習対象は
誰でしょう?
Python Webサービスの開発を基礎からしっかりと始めたい方
Djangoウェブ開発の真髄を感じたい方
バックエンド/フロントエンド/デプロイまで、一つの講義ですべて経験してみたい方
前提知識、
必要でしょうか?
Pythonの基本的な文法の理解(関数、クラス、デコレータ、型ヒント、ジェネレータ)
JavaScriptの基本文法に対する理解(関数、Prototype、thisなど)
Docker でコンテナを起動する
2,844
受講生
133
受講レビュー
926
回答
4.7
講座評価
5
講座
파이썬과 장고에 진심인 소프트웨어 개발자
파이썬/장고 질답 및 교육서비스, 파이썬 사랑방 주인장
파이썬 사랑방 with Django/React 커뮤니티 (구. Ask Django) 운영자
(전) Microsoft Azure MVP 어워드 수상 (2016년~2022년)
대외 활동
오프라인 교육 : SK텔링크, LS그룹, 삼성 디스플레이, 부산대학교 정보화본부, 서울대학교 벤처경영학연합전공, 패스트캠퍼스 웹서비스 개발 캠프 3기 등
기술 자문 : 유클리드소프트, 부산대학교, 한국산업기술평가관리원, 한국방송통신전파진흥원 등
여러분의 파이썬/장고/리액트 페이스메이커가 되겠습니다. 😉
全体
295件 ∙ (35時間 56分)
講義資料(こうぎしりょう):
4. Mac開発環境構築
17:15
5. 00-03 Djangoプロジェクトの作成
22:12
6. VSCode Django 開発環境設定
10:54
8. PyCharm Django 開発環境設定
10:28
11. 01-03 検索サポート
05:33
12. 01-04 データベース連携
13:44
14. 01-06 CSSフレームワーク適用
06:16
23. 03-01 データをロードして変換する
15:39
25. 03-03 検索サポート
04:22
45. 05-01 Djangoシェル
03:38
52. 05-08 カスタムモデルマネージャー
08:10
56. 06-04 マイグレーション注意事項
11:13
74. 07-13 インデックス指定方法
05:00
75. 07-14 単一カラムの一意性制約条件
07:51
76. 07-15 複合カラムの一意性制約条件
03:09
100. 08-02 HTML Form 転送
08:56
102. 08-04 リクエストオブジェクト
09:03
103. 08-05 応答オブジェクト
06:19
106. 08-08 Form 有効性検査
11:41
117. 08-19 フォームフィールド簡単整理
08:36
189. 11-06 プロフィールページ実装
01:00
192. 11-08 会員登録実装
02:44
196. 11-12 会員登録と同時にログイン
00:35
206. 11-22 ノートリストページ実装
04:07
227. 12-03 サービスアーキテクチャ
05:34
243. 13-06 JSON応答データ構造変更
07:58
248. 13-11 削除API実装
02:14
255. 13-18ページングをサポート
14:51
265. 15-02 純粋関数
03:06
266. 15-03 JSXと宣言的UI
08:25
267. 15-04 ステータス値
11:39
271. 15-08 イベント処理
06:12
279. 15-16 RouterでSPAを作る
12:46
287. 17-01 キャッシュ API #1
11:34
288. 17-02 キャッシュAPI #2
07:06
289. 18-01 サブドメイン申請のご案内
00:30
全体
17件
4.9
17件の受講レビュー
受講レビュー 7
∙
平均評価 4.7
修正済み
受講レビュー 5
∙
平均評価 5.0
受講レビュー 1
∙
平均評価 5.0
受講レビュー 3
∙
平均評価 5.0
知識共有者の他の講座を見てみましょう!
同じ分野の他の講座を見てみましょう!