Djangoのあなたの最初のDjangoアプリケーション(1)


公式ドキュメント:https://docs.djangoproject.com/en/2.0/
プロジェクトの作成
Djangoを初めて使用する場合は、初期設定を処理しなければなりません.つまり、データベース構成、Django固有のオプション、アプリケーション固有の設定など、Djangoプロジェクトを構築するコード-Djangoインスタンスの設定セットを自動的に生成する必要があります.
コマンドラインcdからコードを格納するディレクトリに入り、次のコマンドを実行します.
$ django-admin startproject mysite

これにより、mysiteは現在のディレクトリにディレクトリを作成します.
mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py

これらのファイルは次のとおりです.
  • 外部mysite/本のディレクトリはプロジェクトのコンテナにすぎません.その名前はDjangoにとって重要ではありません.好きなものに名前を変更することができます.
  • manage.py:このDjangoプロジェクトとさまざまな方法で対話できるコマンドラインユーティリティ.manage.pyはdjango-adminとmanageで使用できます.pyで詳細をすべて読みます.
  • 内部mysite/ディレクトリはプロジェクトの実際のPythonパッケージです.この名前は、コンテンツをインポートするために必要なPythonパッケージの名前です(mysite.urlsなど).
  • mysite/__init__.py:ディレクトリがPythonパッケージと見なすべきであることを示す空のファイル.Python初心者の場合は、公式Pythonドキュメントのパッケージの詳細を参照してください.
  • mysite/settings.py:このDjangoプロジェクトの設定/構成.Django設定では、設定がどのように動作するかに関するすべての情報が表示されます.
  • mysite/urls.py:このDjangoプロジェクトのURL宣言;Djangoがサポートするサイトの「ディレクトリ」.URLスケジューラでは、URLの詳細を参照できます.
  • mysite/wsgi.py:WSGI対応Webサーバのエントリポイントで、プロジェクトにサービスを提供します.詳細については、WSDIの導入方法を参照してください.

  • サーバの開発
    Djangoプロジェクトが有効であることを確認しましょう.mysite外部ディレクトリに変更されていない場合は、次のコマンドを実行します.
    $ python manage.py runserver
    

    コマンドラインには、次の出力が表示されます.
    Performing system checks...
    
    System check identified no issues (0 silenced).
    
    You have unapplied migrations; your app may not work properly until they are applied.
    Run 'python manage.py migrate' to apply them.
    
    July 06, 2018 - 15:50:53
    Django version 2.0, using settings 'mysite.settings'
    Starting development server at http://127.0.0.1:8000/
    Quit the server with CONTROL-C.

    に注意
    データベース移行が適用されていないという警告を一時的に無視します.私たちはすぐにデータベースを処理します.
    Django開発サーバを起動しました.Pythonで純粋に作成された軽量級Webサーバです.Djangoに含まれているため、Apacheなどの本番サーバの構成を処理することなく、迅速に開発できます.
    本番環境のような場所でこのサーバを使用しないでください.開発時にのみ使用されます.△当社の業務はWebサーバではなくWebフレームワークを作成することです.
    サーバーが稼働中ですので、Webブラウザを使用してアクセスしてくださいhttp://127.0.0.1:8000/.「Congratulations!page, with a rocket taking off. It worked!
    pollsアプリケーションの作成
    あなたの環境-「プロジェクト」-が構築されている以上、仕事を始めることができます.
    Djangoで作成した各アプリケーションには、特定の約束に従ったPythonパッケージが含まれています.Djangoには、アプリケーションの基本ディレクトリ構造を自動的に生成するユーティリティが付属しているので、ディレクトリの作成ではなくコードの作成に専念できます.
    プロジェクトと応用
    プロジェクトとアプリケーションの違いは何ですか?アプリケーションは、Weblogシステム、パブリックレコードデータベース、または簡単なポーリングアプリケーションなど、いくつかの操作を実行するWebアプリケーションです.プロジェクトは、特定のWebサイトの構成とアプリケーションの集合です.プロジェクトには複数のアプリケーションを含めることができます.1つのアプリケーションは複数のプロジェクトで使用できます.
    アプリケーションはPythonパスのどこにでも存在します.このチュートリアルでは、manage.pyファイルの横に世論調査アプリケーションを作成し、サブモジュールmysiteではなく、独自のトップモジュールとしてインポートできます.
    アプリケーションを作成するには、ディレクトリと同じディレクトリにあることを確認し、次のコマンドを入力します.
    $ python manage.py startapp polls
    

    次に、ディレクトリmanage.pyが作成されます.
    polls/
        __init__.py
        admin.py
        apps.py
        migrations/
            __init__.py
        models.py
        tests.py
        views.py
    

    このディレクトリ構造には、ポーリングアプリケーションが含まれます.
    最初のビューを書いて
    最初のビューを書きましょう.ファイルpollsを開き、以下のPythonコードを入れます.
    polls/views.py
    from django.http import HttpResponse
    
    
    def index(request):
        return HttpResponse("Hello, world. You're at the polls index.")

    これはDjangoで最も簡単なビューです.ビューを呼び出すには、URLにマッピングする必要があります.そのためにはURLconfが必要です.
    pollsディレクトリにURLconfを作成するには、polls/views.pyという名前のファイルを作成します.appディレクトリは次のようになります.
    polls/
        __init__.py
        admin.py
        apps.py
        migrations/
            __init__.py
        models.py
        tests.py
        urls.py
        views.py
    

    このurls.pyファイルには、次のコードが含まれています.
    polls/urls.py
    from django.urls import path
    
    from . import views
    
    urlpatterns = [
        path('', views.index, name='index'),
    ]

    次に、ルートURLconfをpolls/urls.pyモジュールに向けます.polls.urlsで、mysite/urls.pyを追加し、django.urls.includeinclude()リストに挿入します.
    mysite/urls.py
    from django.contrib import admin
    from django.urls import include, path
    
    urlpatterns = [
        path('polls/', include('polls.urls')),
        path('admin/', admin.site.urls),
    ]
    urlpatterns関数は、他のURLconfを参照することを可能にする.Djangoが遭遇するたびにinclude()は、その点に一致するURLの任意の部分を削除し、残りの文字列を含むURLconfに送信してさらに処理する.
    裏の考え方include()は、プラグアンドプレイのURLを容易にすることです.世論調査は独自のURLconf(include())にあるため、「/polls/」または「/fun_polls/」または「/content/polls/」または他のパスルートディレクトリの下に置くことができ、アプリケーションは依然として動作します.
    いつpolls/urls.pyを使いますか.include()他のURLモードが含まれている場合は、常に使用してください.include()は唯一の例外です.admin.site.urlsビューをURLconfに接続しました.正常に動作しているかどうかを確認し、次のコマンドを実行します.
    $ python manage.py runserver
    

    ブラウザでhttp://localhost:8000/polls/に移動すると、indexビューで定義したテキスト「Hello,world.You're at the polls index.」が表示されます.
    url関数には4つのパラメータがあり、2つの必須パラメータ:regex正則とviewビュー;2つのオプションパラメータ:kwargs辞書とname名前.この点では、これらのパラメータが何をしているのかを見る価値があります.
    urlパラメータurlパラメータ:regex
    「regex」という用語は、正規表現「regular expression」の略であり、ここではurlマッチングモードを例示するマッチング文字列の構文である.Djangoはリストの最初の正規表現から始まり、要求されたURLが見つかるまで順番に一致します.
    これらの正規表現は、GETおよびPOST要求のパラメータ値、またはドメイン名に一致しないことに注意してください.たとえばhttps://www.example.com/myapp/このリクエストは、URLconfがmyapp/;https://www.example.com/myapp/?page=3このリクエストは、URLconfもmysqpp/しか探していません.
    正規表現の助けが必要な場合は、Wikipedia’s entryとreモジュールに関するドキュメントを参照してください.また、Jeffrey Friedlが書いた本「正規表現を身につける」も素晴らしいです.実際には、正規表現の専門家になる必要はありません.簡単なキャプチャモードをどのように使用するかを本当に理解する必要があります.複雑な正則は、望ましくない検索性能を有する可能性があるため、正則マッチングに依存するべきではありません.
    最後に、これらの正規表現はURLconfモジュールのロード後の最初の時間にコンパイルされます.これらは非常に速いです(検索が特に複雑でない限り、上記の例のように).
    urlパラメータurlぱらめーた:view
    Djangoが正規表現の一致を発見すると、Djangoは指定したビュー関数を呼び出し、HttpRequestオブジェクトを最初のパラメータとし、正規表現が取得した値を他のパラメータとします.単純なキャプチャを正則的に使用すると、値は位置パラメータとして渡されます.名前付きキャプチャを使用すると、値がキーワードとして渡されます.後で例を示します.
    urlパラメータ:kwargs
    任意のキーワードパラメータは、辞書としてターゲットビューに渡すことができます.しかし、このチュートリアルでDjangoのこの特性を使用するつもりはありません.
    urlパラメータ:name
    あなたのURLを命名すると、Djangoの他の場所で何を引用しているのか、特にテンプレートで理解することができます.この強力な特性により、プロジェクト内でファイルを操作することでURLモードをグローバルに変更することができます.