Djiango:Djiangoの入門知識に関する最初の講義

ここに画像の説明を挿入

(チェイニー先生のライブレクチャーの内容による)

1.仮想環境

1なぜ仮想環境が必要なのですか

  • これまでのところ、サードパーティのパッケージインストールはすべてpip install xxを介して直接インストールされているため、インストールによってそのパッケージがシステムレベルのPython環境にインストールされます。しかし、これには問題があります。つまり、今Django 1.10.xでWebサイトを作成していて、リーダーが、Django 0.9で開発された古いプロジェクトがあり、Django1.10は互換性がなくなったと言った場合です。 Django0.9のいくつかの構文。現時点では問題が発生しますが、Django1.10とDjango0.9の両方の環境をコンピューターにインストールするにはどうすればよいですか?現時点では、仮想環境を通じてこの問題を解決できます。
  • 一般的に使用される仮想環境の作成方法は、virtualenv、virtualenvwrapper、pipenvです。
  • pipenvをお勧めします

2、pipenv

2、Djangoフレームワークの紹介

  • DjangoもMVCのアイデアに従いますが、MVTと呼ばれる独自の名詞があります

1.なぜフレームワークを使用するのですか?

  • この問題をよりよく説明するために、アプリケーションの開発プロセスを比較します。多くの場合、アプリケーション(Webアプリケーション、システムアプリケーション)の開発は、家を建てるプロセスと同じです。基礎を築き、骨格を構築し、次にブロックごとに積み上げます。

  • アプリケーションの開発はどうですか?また、優れたアーキテクチャ設計、データベースモデリング、そしてコード実装を使用したモジュールごとのモデリングも必要です。
    ここに画像の説明を挿入

  • フレームを使わずにソフトウェアアプリケーションを開発する場合、それは私たちが家を建てるときと本質的に同じであり、すべてのレンガとすべての棒鋼は私たち自身で製造する必要があります。

  • もちろん、家を建てる前にあらゆるレンガやあらゆる種類の建築材料を生産する必要がある場合、家を建てる効率は非常に低く、一生家を建てることさえできないかもしれません。

  • アプリケーションシステムを開発する場合、フレームワークを使用すると次の利点があります。

    • 開発効率を大幅に向上
    • アプリケーション開発をより標準化および拡張可能にする
    • プログラマーが、反復的で複雑な基本環境(Webサーバー、低レベルの実装など)ではなく、ビジネスロジックの実現に集中できるようにします。

2.なぜDjangoとFlaskフレームワークを使用するのですか?

  • Pythonプログラミング言語の世界には、最も強力で人気のある2つのフレームワークがあります。
  • これら2つのフレームワークは、Webバックエンド開発やマイクロサービス開発だけでなく、ERPシステム開発やAPIインターフェース開発でも広く使用されています。

3.DjangoとFlaskの違い

3.1画像の類似性

ここに画像の説明を挿入

  • Djangoが、豪華な家具、強力な家電製品の完全なセット、その他すべてを備えた、美しく装飾された家に似ている場合は、バッグを持って移動できます。これは非常に便利です。
    ここに画像の説明を挿入
  • フラスコは荒い家に似ています。材料を探し、家具を購入して自分で設置することで家を飾りたいと考えています。素材や家具はバラエティに富んでいて、すべて無料で出来上がっているので、持って行ってみてください。

3.2音量の違い

  • フラスコ:
    • 小さくて柔軟性があり、プログラマーがカスタマイズする機能を決定できるため、小さなWebサイトに非常に適しています。
    • ラフな家を都会の複合施設に飾るのは、一般の労働者にとってはまだ非常に面倒です。大規模なウェブサイトを開発するのはフラスコと同じです。開発はより難しく、コード構造は自分で設計する必要があります。開発コストは、開発者の能力と経験によって異なります。
  • Django:
    • 大きくて完全で、非常に強力で、多くのユーザーと非常に豊富なサードパーティライブラリを備えたPythonWebフレームワークのパイオニアです。
    • エンタープライズレベルのWebサイトの開発には非常に適していますが、小規模なマイクロサービスの場合、常に「鶏を殺す」という感覚があります。大きくて非常に肥大化しています。カスタマイズの程度はFlaskほど高くありません。フラスコほど柔軟ではありません。

3.3同じHelloWorld関数を完了します

  • Flaskを使用して完了します。
    • 最初のステップはフラスコをインストールすることです、ピップインストールフラスコ

    • 2番目のステップは、my_first_app.pyファイルを作成し、次のコードを追加することです。
      ここに画像の説明を挿入

    • 最も単純なHelloWorld関数を完了するために、Flaskは7行のコードのみを必要とします。これは、非常に単純で便利です。

  • Djangoを使用して以下を完了します。
    • 最初のステップはDjangoをインストールすることです、pip install django

    • 2番目のステップは、プロジェクトディレクトリdjango-admin startprojectmyprojectを作成することです。

    • 3番目のステップは、サブアプリケーションpython manage.py startappmyappを作成することです。

    • 4番目のステップは、myappアプリケーションが配置されているディレクトリのviews.pyファイルに次のコードを追加することです。
      ここに画像の説明を挿入

    • 5番目のステップは、myappアプリケーションが配置されているディレクトリにurls.pyルーティングファイルを作成し、次のコードを追加することです。
      ここに画像の説明を挿入

    • 6番目のステップは、メインルートファイルにルートを追加することです。

  • 上記の操作手順から、同じ機能を実現するために、Flaskはコードが少なくて単純であることが多く、Djangoはより多くのプロセスを必要とし、プロジェクト構造が明確であることがわかります。これは大規模プロジェクトで利点があります。

2.4実際の作業でこれら2つのフレームワークを選択するにはどうすればよいですか?

  • Python Web開発WSGIプロトコルの原理と実装プロセスを理解したい場合、またはコンポーネントを柔軟にカスタマイズし、アプリケーションを完全にDIYし、マイクロサービスを実装したい場合は、Flaskを選択することをお勧めします。
  • 製品の最終納品が心配で、大規模なアプリケーションシステム(ニュースWebサイト、ショッピングモール、ERPなど)を迅速に開発したい場合は、すべての機能を備えたDjangoを選択することをお勧めします。必要なだけでなく、予期しない機能。
  • つまり、大規模なプロジェクトにはDjiangoフレームワークが推奨され、小規模なプロジェクトにはフラスコフレームワークが推奨されます。

3、Django開発の原則

  • 迅速な開発とDRYの原則。繰り返してはいけません。繰り返してはいけません。
  • 公式サイトマニュアル紹介

Djangoの公式ウェブサイト:https:
//www.djangoproject.com/中国語ドキュメントのDjango Book2.0バージョン:http://djangobook.py3k.cn/2.0/chapter01/

4、Djangoプロジェクトの作成

  • まず、仮想環境にDjangoをインストールします
    • pip install django == 2.2 -i https://pypi.tuna.tsinghua.edu.cn/simple

1. pycharmを使用します(非推奨)

pycharmがプロフェッショナルバージョンの場合、pycharmを使用してDjangoプロジェクトを作成できます
ここに画像の説明を挿入

2.コマンドラインを使用します

  • プロジェクトを作成します。ターミナルを開き、次のコマンドを使用します:django-admin startproject [プロジェクト名]
  • 比如:django-admin startproject django_demo
    ここに画像の説明を挿入
  • コマンドはプロンプトなしで正常に実行されますが、プロジェクト関連のファイルは自動的に作成されますここに画像の説明を挿入

3.Djangoプロジェクトを実行します

  • manage.py:プロジェクトの起動ファイル(フラスコは自分で手書きする必要があり、Djangoは自動的に生成されます)は、エントリファイルとも呼ばれ、プロジェクトと対話するファイルです。

3.1コマンドライン経由:python manage.py runserver

ここに画像の説明を挿入
ここに画像の説明を挿入

3.2指定されたポートに従ってサービスを開始します:python manage.py runserver port

ここに画像の説明を挿入
ここに画像の説明を挿入

3.3指定されたポートに従ってサービスを開始します:python manage.py runserver port

ここに画像の説明を挿入
ここに画像の説明を挿入

3.4データベースの移行:pythonmanage.pymigrate

  • システムは正常に起動しますが、次のエラーメッセージが表示されます。
    ここに画像の説明を挿入

3.4.1データベース移行の実行後、再起動時にエラーは報告されません

ここに画像の説明を挿入

3.4.2 mysqlまたは他のデータベースを構成せずに移行が成功するのはなぜですか?

  • Djangoがプロジェクトを作成すると、デフォルトでsqlite3データベースが構成され、データベースの移行時にデータベースがsqlite3に移行されるため、データベースを起動して構成しなくても移行を成功させることができます。

    ここに画像の説明を挿入

3.5pycharmエディターでプロジェクトを開始します

  • 開発プロセスでは、コマンドラインを使用してプロジェクトを開始しますが、これはデバッグに不便であり、操作が非常に面倒です。

3.5.1 pycharmでプロジェクトを開始するには、parametersパラメーターを構成する必要があります。

ここに画像の説明を挿入

  • もう一度manage.pyを実行します

3.5.2 pycharmでプロジェクトを開始し、パラメーターパラメーターを構成しないでください。操作は次のとおりです。

ここに画像の説明を挿入

  • ブラウザで開くことができません
  • 関連情報はmanage.pyのヘルプドキュメントです:python manage.py help

4.プロジェクトのメインファイルの説明を自動的に作成します

ここに画像の説明を挿入

4.1 init .py:プロジェクト初期化ファイル

  • ファイルが空です。必要に応じて追加してください

4.2 settings.py:構成ファイル

  • システムは多くの構成アイテムを自動的に生成します

4.3 urls.py:ルーティング構成ファイル

  • システムは自動的にルートを生成します:バックグラウンドルートを管理します
from django.contrib import admin
from django.urls import path

urlpatterns = [
   path('admin/', admin.site.urls),
]

4.4 wigi.py:デプロイ時に使用されます

  • システムは自動的にいくつかのコンテンツを作成します

5、Djangoアプリ

  • ここのアプリは携帯電話のアプリと同じコンセプトではありません

1.アプリを作成する理由

  • Djangoアプリは、さまざまな機能コードを分離し、それらをフォルダーに分割して管理することです
  • 良い管理
  • 共同開発はより便利です
  • 良いメンテナンス

2.アプリを作成します:python manage.py startapp [アプリ名]

2.1本機能アプリの作成など

  • コマンドラインで次のコマンドを実行します
    。pythonmanage.pyappbook-作成が成功した後、プロンプトは表示されません。
    ここに画像の説明を挿入
  • ただし、システムは自動的にブックフォルダーを生成し、プロジェクトに必要な関連ファイルを自動的に作成します

2.2アプリ内のファイル

ここに画像の説明を**太字**で挿入します

2.2.1 init .py:コンテンツはPythonモジュールです

2.2.1 admin.py:Webサイトのバックグラウンド管理に関連

2.2.1 apps.py:Webサイトのバックグラウンド管理に関連

  • システムは自動的にコンテンツを作成し、ブックアプリを宣言します
from django.apps import AppConfig
class BookConfig(AppConfig):
    name = 'book'

2.2.2 models.py:データベース移行用のデータベース関連のコンテンツ、モデルを作成します

  • システムは自動的に参照を作成します
from django.db import models
# Create your models here.

2.2.1 tests.py:テストコード(ケース)を作成するためのファイル(当面は気にしないでください)

2.2.3 views.py:リクエストの受信、データの処理、MおよびTとの対話(コードロジック)

2.3アプリケーション登録

  • アプリケーションとプロジェクト間の接続を確立するには、アプリケーションを登録する必要があります。
  • settings.pyのINSTALLED_APPS構成アイテムを変更します。

6、Djangoの最初の体験

1.プロジェクトのホームページにHelloWorldを表示します

  • urls.pyでインデックス関数を定義して、HelloWorldを返します。
  • urls.pyにu​​rlpatternsへの参照を追加します
# ./django_demo/urls.py 
from django.contrib import admin
from django.urls import path
from django.http import HttpResponse

def index(request):
    # name=reuqest.GET.get("name")
    return HttpResponse("hello world")

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', index),
]

ここに画像の説明を挿入

ここに画像の説明を挿入

2.上記のコードは仕様に注意を払う必要があります

2.1ルーティング関数はリクエストパラメータを受け取る必要があります

  • つまり、def関数名(リクエスト)、それ以外の場合は、一連のエラーが報告されます

2.2ルーティング関数の戻り値は、HttpResponseBaseクラスまたはそのサブクラスである必要があります

  • それ以外の場合、戻り値のデータ型が間違っています

3.エラーメッセージは、プロジェクトの開始時に簡単に報告できます。

3.1「UnicodeDecodeError: 'gbk'コーデックは9737の位置にあるバイト0xa6をデコードできません:不正なマルチバイトシーケンス」

ここに画像の説明を挿入

  • 原因分析:
    • これはDjango2.2のdebug.pyのコーディングの問題です。コードは間違っていません、表示されません
  • ソリューションパス:
    • 上記のdebug.pyをクリックしてください。
      ここに画像の説明を挿入
  • 着替える
    ここに画像の説明を挿入

3.2次のエラーメッセージがページに表示されます。

ここに画像の説明を挿入

  • 原因分析:
    • これは、ルーティング機能にリクエストがないためです ここに画像の説明を挿入
    • ソリューションパス:def index(request)は問題ありません
      ここに画像の説明を挿入

3.3次のエラーメッセージがページに表示されます。

ここに画像の説明を挿入

  • 原因分析:

    • これは、ルーティング関数がHttpRespense( "Return String")を使用しない場合の戻り値です。
      ここに画像の説明を挿入
    • ソリューションパス:return HttpResponse( "hello world")
      ここに画像の説明を挿入

4.ブックアプリのホームページに「ブックホームページ」を表示します

  • book / view.pyで本の機能を定義し、「本のホームページ」に戻ります。
  • urls.pyにu​​rlpatternsへの参照を追加します
# ./book/view.py 
from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.

def book(request):
    return HttpResponse("图书首页")
from django.contrib import admin
from django.urls import path
from django.http import HttpResponse
from lesson01.django_demo.book import views

def index(request):
    # name=reuqest.GET.get("name")
    return HttpResponse("hello world")

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', index),
    path('book/', views.book),
]

ここに画像の説明を挿入

上記のコンテンツは、次の記事も参照しています
。BlogGardenKeyou「PythonのDjangoフレームワークとFlaskフレームワークの違いを本当に理解している」

おすすめ

転載: blog.csdn.net/laoluobo76/article/details/111333748