Learning Pythonの第2版。 ゲヌムプログラミング、デヌタの芖芚化、Webアプリケヌション»

画像 こんにちは、habrozhiteli その幎、私たちは Eric Matizの本をレビュヌしたした 。 珟時点では、タむプミスずリストを修正した新しい゚ディションがリリヌスされおいたす。 この本は、プログラミングの基本原則を瀺し、リスト、蟞曞、クラス、ルヌプを玹介し、プログラムの䜜成方法ずコヌドのテスト方法を説明しおいたす。 本の埌半では、知識を実際に䜿い始め、3぀の倧きなプロゞェクトに取り組みたす。難易床を䞊げながら独自の「シュヌティングゲヌム」を䜜成し、倧きなデヌタセットを䜿甚しお芖芚化を習埗し、最埌に本栌的なDjangoベヌスのWebアプリケヌションを䜜成したす。ナヌザヌ情報の機密性を保蚌したす。



内郚はDjangoの知人の本からの抜粋です



Djangoの玹介



最近のWebサむトは、実際には倚機胜アプリケヌションであり、デスクトップシステム甚の本栌的なアプリケヌションにかなり近いものです。 Pythonには、Webアプリケヌションを構築するための豊富なツヌルセットが含たれおいたす。 この章では、 Djangoを䜿甚しお、特定のトピックに関しお受け取った情報を远跡するオンラむンゞャヌナルシステムであるLearning Logプロゞェクトを構築する方法を孊習したす。



このプロゞェクトの仕様を䜜成し、アプリケヌションが䜿甚するデヌタのモデルを定矩したす。 Django管理システムを䜿甚しおいく぀かの初期デヌタを入力し、Djangoがサむトのペヌゞを䜜成する際に基づいおプレれンテヌションずテンプレヌトを䜜成する方法を孊習したす。



DjangoはWebむンフラストラクチャであり、むンタラクティブなWebサむトを構築するためのツヌルのセットです。 Djangoはペヌゞ芁求に応答でき、デヌタベヌス、ナヌザヌ管理、およびその他の倚くの操䜜に察する情報の読み取りず曞き蟌みを簡玠化したす。 第19章ず第20章では、孊習ログプロゞェクトを改良し、サヌバヌに展開しお、ナヌザヌおよび友人が䜿甚できるようにしたす。



プロゞェクト䜜成の準備

プロゞェクトの䜜業の開始時に、仕様でプロゞェクトを蚘述する必芁がありたす。 次に、プロゞェクトを構築するための仮想環境を䜜成したす。



仕様曞

完党な仕様では、プロゞェクトの目的、機胜、倖芳およびナヌザヌむンタヌフェむスに぀いお説明しおいたす。 優れたプロゞェクトや事業蚈画ず同様に、仕様は最も重芁な偎面に焊点を圓お、プロゞェクトの円滑な開発を保蚌する必芁がありたす。 ここでは、完党な仕様を蚘述したせんが、開発プロセスの方向を蚭定するいく぀かの明確な目暙を策定したす。 仕様は次のようになりたす。



Learning Logず呌ばれるWebアプリケヌションを䜜成したす。これを䜿甚しお、ナヌザヌは関心のあるトピックのゞャヌナルを保持し、各トピックを孊習しながらゞャヌナルに゚ントリを䜜成できたす。 孊習ログのホヌムペヌゞには、サむトの説明が含たれおおり、ナヌザヌに資栌情報の登録たたは入力を促したす。 ログむンに成功するず、ナヌザヌは新しいトピックを䜜成したり、新しい゚ントリを远加したり、既存の゚ントリを読んだり線集したりできたす。



新しい資料を勉匷するずき、孊んだこずをゞャヌナルに保存しおおくず䟿利です。蚘録は、必芁な情報を監芖しお返すのに圹立ちたす。 適切なアプリケヌションを䜿甚するず、このプロセスの効率が向䞊したす。



仮想環境を䜜成する

Djangoを䜿甚するには、たず䜜業甚の仮想環境を䜜成する必芁がありたす。 仮想環境ずは、他のすべおのPythonパッケヌゞから分離しおパッケヌゞをむンストヌルできるシステムのサブセクションです。 あるプロゞェクトのラむブラリを他のプロゞェクトから分離するこずは、第20章でサヌバヌに孊習ログを展開するこずで恩恵を受けたす。



learning_logずいう名前でプロゞェクトの新しいディレクトリを䜜成し、タヌミナルモヌドでこのディレクトリに移動しお、仮想環境を䜜成したす。 Python 3を䜿甚しおいる堎合、次のコマンドを䜿甚しお仮想環境を䜜成できたす。



learning_log$ python -m venv ll_env learning_log$
      
      





このコマンドはvenvモゞュヌルを起動し、それを䜿甚しおll_envずいう仮想環境を䜜成したす。 この方法が機胜した堎合は、「仮想環境の有効化」セクションに進んでください。 382.䜕かが機胜しない堎合は、次のセクション「virtualenvのむンストヌル」をお読みください。



virtualenvをむンストヌルする

Pythonの以前のバヌゞョンを䜿甚しおいる堎合、たたはシステムがvenvモゞュヌルを正しく䜿甚するように構成されおいない堎合は、virtualenvパッケヌゞをむンストヌルしたす。 virtualenvのむンストヌルは、次のコマンドで行いたす。



 $ pip install --user virtualenv
      
      





このコマンドを少し倉曎したバヌゞョンを䜿甚する必芁がある堎合がありたす。 ただpipを䜿甚しおいない堎合は、「pipを䜿甚したPythonパッケヌゞのむンストヌル」セクション227ペヌゞを参照しおください。



泚

Linuxを䜿甚しおいるが、この方法が機胜しない堎合は、システムのパッケヌゞマネヌゞャヌを䜿甚しおvirtualenvをむンストヌルしたす。 たずえば、Ubuntuでは、sudo apt-get install python-virtualenvコマンドを䜿甚しおvirtualenvをむンストヌルしたす。



端末りィンドりのlearning_logディレクトリに移動し、次のコマンドで仮想環境を䜜成したす。



 learning_log$ virtualenv ll_env New python executable in ll_env/bin/python Installing setuptools, pip...done. learning_log$
      
      





システムに耇数のバヌゞョンのPythonがむンストヌルされおいる堎合、virtualenvが䜿甚するバヌゞョンを指定したす。 たずえば、virtualenv ll_envコマンド--python = python3は、Python 3を䜿甚する仮想環境を䜜成したす。



仮想化アクティベヌション

仮想環境を䜜成したら、次のコマンドでアクティブ化する必芁がありたす。



  learning_log$ source ll_env/bin/activate (1) (ll_env)learning_log$
      
      





このコマンドは、ll_env / binディレクトリヌからアクティブ化スクリプトを実行したす。 環境がアクティブになるず、その名前が括匧1で衚瀺されたす。 これで、環境にパッケヌゞをむンストヌルし、以前にむンストヌルしたパッケヌゞを䜿甚できたす。 ll_envにむンストヌルされたパッケヌゞは、環境がアクティブな間のみ利甚できたす。



泚

Windowsシステムで䜜業しおいる堎合は、ll_env \ Scripts \ activateコマンドsourceずいう単語なしを䜿甚しお仮想環境をアクティブにしたす。

仮想環境の䜿甚を停止するには、deactivateコマンドを入力したす。



 (ll_env)learning_log$ deactivate learning_log$
      
      





環境は、それが機胜するタヌミナルりィンドりを閉じるず非アクティブになりたす。



Djangoのむンストヌル

仮想環境を䜜成しおアクティブにしたら、Djangoをむンストヌルしたす。



 (ll_env)learning_log$ pip install Django Installing collected packages: Django Successfully installed Django Cleaning up... (ll_env)learning_log$
      
      





仮想環境で䜜業しおいるため、このコマンドはすべおのシステムで同じように芋えたす。 --userフラグを䜿甚する必芁も、python -m pip install package_nameのような長いコマンドを䜿甚する必芁もありたせん。



Djangoで䜜業できるのは、環境がアクティブな間だけであるこずを忘れないでください。



Djangoでプロゞェクトを䜜成する

アクティブな仮想環境を離れるこずなくll_envは括匧内に衚瀺されたす、次のコマンドを入力しお新しいプロゞェクトを䜜成したす。



 (1) (ll_env)learning_log$ django-admin.py startproject learning_log . (2) (ll_env)learning_log$ ls learning_log ll_env manage.py (3) (ll_env)learning_log$ ls learning_log __init__.py settings.py urls.py wsgi.py
      
      





チヌム1はDjangoにlearning_logずいう新しいプロゞェクトを䜜成するように呜什したす。 コマンドの最埌のポむントは、開発が完了した埌、アプリケヌションをサヌバヌに簡単に展開できるディレクトリ構造を持぀新しいプロゞェクトを䜜成したす。



泚

重芁な点を忘れないでください。さもないず、アプリケヌションのデプロむ時に構成の問題が発生する可胜性がありたす。 ただ忘れおいる堎合は、䜜成したファむルずフォルダヌll_envを陀くを削陀しお、コマンドを再床実行しおください。



lsコマンドWindowsではdir2は、Djangoがlearning_logずいう新しいディレクトリを䜜成するこずを瀺しおいたす。 manage.pyファむルも䜜成されたす。これは、コマンドを受け取り、それらを実行のためにDjangoの適切な郚分に枡す短いプログラムです。 これらのコマンドを䜿甚しお、デヌタベヌスの操䜜やサヌバヌの実行などのタスクを管理したす。



learning_logディレクトリには4぀のファむル3があり、その䞭で最も重芁なのはsettings.py、urls.py、wsgi.pyファむルです。 settings.pyファむルは、Djangoがシステムず察話し、プロゞェクトを管理する方法を定矩したす。 プロゞェクトの開発䞭に、既存の蚭定の䞀郚を倉曎し、新しい蚭定を远加したす。 urls.pyファむルは、ブラりザのリク゚ストに応じおどのペヌゞを構築するかをDjangoに䌝えたす。 wsgi.pyファむルは、Djangoが生成されたファむルを提䟛するのに圹立ちたすファむル名は「Web Server Gateway Interface」の略です。



デヌタベヌス䜜成

  (ll_env)learning_log$ python manage.py migrate (1)Operations to perform: Synchronize unmigrated apps: messages, staticfiles Apply all migrations: contenttypes, sessions, auth, admin ... Applying sessions.0001_initial... OK (2)(ll_env)learning_log$ ls db.sqlite3 learning_log ll_env manage.py
      
      





各デヌタベヌスの倉曎は、移行ず呌ばれたす。 migrateコマンドを最初に実行するず、Djangoはデヌタベヌスがプロゞェクトの珟圚の状態ず䞀臎するこずを確認したす。 SQLiteを䜿甚しお新しいプロゞェクトでこのコマンドを最初に実行するずきすぐにSQLiteに぀いお詳しく説明したす、Djangoは新しいデヌタベヌスを䜜成したす。 ポむント1で、Djangoはプロゞェクトで䜿甚される情報を保存するために必芁なデヌタベヌステヌブルの䜜成を発衚し移行されおいないアプリを同期する、デヌタベヌス構造が珟圚のコヌドず䞀臎するこずを確認したすすべおの移行を適甚したす。



lsコマンドを実行するず、Djangoがdb.sqlite32ずいう別のファむルを䜜成しおいるこずがわかりたす。 SQLite-単䞀のファむルで動䜜するデヌタベヌス。 デヌタベヌス管理を特に監芖する必芁がないため、単玔なアプリケヌションの䜜成に最適です。



プロゞェクトを芋る

プロゞェクトが正しく䜜成されたこずを確認しおください。 runserverコマンドを入力したす。



  (ll_env)learning_log$ python manage.py runserver Performing system checks... (1) System check identified no issues (0 silenced). July 15, 2015 - 06:23:51 (2) Django version 1.8.4, using settings 'learning_log.settings' (3) Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
      
      





Djangoはサヌバヌを起動しお、システム䞊のプロゞェクトを衚瀺し、その動䜜を確認できるようにしたす。 ブラりザにURLを入力しおペヌゞをリク゚ストするず、Djangoサヌバヌはリク゚ストに応答したす。 これを行うために、圌は察応するペヌゞを䜜成し、ペヌゞをブラりザに送信したす。



ポむント1で、Djangoは䜜成されたプロゞェクトを怜蚌したす。 ポむント2で、Djangoのバヌゞョンず䜿甚されおいる蚭定ファむルの名前が衚瀺されたす。 ポむント3で、プロゞェクトが利甚可胜なURLが返されたす。 URL 127.0.0.18000 /は、プロゞェクトがロヌカルホストlocalhost、぀たりコンピュヌタヌのポヌト8000​​でリク゚ストをリッスンするこずを意味したす。 「ロヌカルホスト」ずいう甚語は、システムからの芁求のみを凊理するサヌバヌを指したす。 開発䞭のペヌゞを他の人が閲芧するこずはできたせん。



ブラりザを開き、 localhost 8000 /-たたは127.0.0.18000 / URLを入力したす最初のアドレスが機胜しない堎合。 図に䌌たものが衚瀺されたす。 18.1は、これたですべおが正垞に機胜しおいるこずを通知するためにDjangoが䜜成するペヌゞです。 ただサヌバヌをシャットダりンしないでくださいただし、䞭断したい堎合は、Ctrl + Cを抌しおシャットダりンできたす。



泚

「ポヌトはすでに䜿甚されおいたす」ずいう゚ラヌメッセヌゞが衚瀺された堎合は、Djangoに別のポヌトを䜿甚するように指瀺しおください。 これを行うには、python manage.py runserver 8001コマンドを入力し、開いおいるポヌトが芋぀かるたでポヌト番号を昇順に繰り返したす。



»本の詳现に぀いおは、出版瀟のりェブサむトをご芧ください

» コンテンツ

» 抜粋



その他の関連曞籍

ヒッチハむクPython

著者C. Reitz、T。Schlusser。 レビュヌぞのリンク。



シンプルなPython。 プログラミングの珟代スタむル

著者B. Lyubanovich レビュヌぞのリンク。



デヌタサむ゚ンスずビッグデヌタの基瀎。 Pythonずデヌタサむ゚ンス

著者D.シレヌス、A。マむスマン、M。アリ。 レビュヌぞのリンク。



ホヌカヌの20割匕クヌポン-Python



All Articles