Pythonの道[第17]:Webサーバのジャンゴ

ジャンゴ

、Webフレームワーク

フレームワーク、リアルタイムのフレームワーク、特に構造をサポートするように設計されたオープンエンドの問題を解決するために、特定の結合でフレームワークを使用すると、すばやく特定のシステムを開発するのに役立つ簡単に言えば、あなたを表示するには良い舞台を構築するために他の人々を使用することであることができます才能。

すべてのWebアプリケーションでは、実際には、ソケットサーバーは、ユーザーのブラウザは、実際に自然の中でソケットクライアントです。

インポートソケット

デフでhandle_request(クライアント):

    BUF = client.recv(1024 
    client.send( "HTTP / 1.1 200 OK \ rをする\ nの\ rを\ n"は.encode( "UTF8" )) client.send( "<H1スタイル= '色:赤'>こんにちは、サイモン</ H1>」(UTF8を"コードする" ))
 DEF メイン():靴下= socket.socket(はsocket.AF_INET、socket.SOCK_STREAM)sock.bind(( 'ローカルホスト」、8001 ))sock.listen(5 )一方、TRUE:接続、アドレス= sock.accept()でhandle_request(接続)connection.close()もし__name__ == '__main__' メイン()

最も単純なWebアプリケーションは、ユーザは、要求を受信したHTMLファイルとリターンから読み込み、最初のHTMLファイルは、既存のHTTPサーバソフトウェアで、良いで保存されています。あなたが動的にHTMLを生成したい場合は、あなたが自分自身を達成するためにこれらのステップを配置する必要があり、しかし、HTTPリクエストを受信し、解析HTTPリクエスト、HTTPレスポンスが私たち自身が、これらの基礎となるコードを記述する場合クーリーは、生きて送信され、それはまだ、ダイナミックHTMLを記述するために開始されていません、私たちは月を過ごすか、HTTPの仕様を読まなければなりません。正しいアプローチは、我々はHTMLドキュメントを生成するに集中するのpythonを使用して、基礎となるコードは、専用サーバー・ソフトウェアによって実現されています。我々は、TCPリンク、HTTPを元の要求と応答の形式なので、私たちのpythonでのWebビジネスを書くことに集中することを可能にする統一されたインタフェースを必要と接触したくないので。

Webサーバーゲートウェイインターフェイス:このインタフェースはWSGIです。

 例:

#_ * _コーディング:UTF-8 _ * _ 
#著者:サイモン
#日時:2019年9月28日午後2時39分
#ソフトウェア:PyCharm 

wsgiref.simple_serverのインポートからはmake_server 


デフfoo1は():
    index1.html」(オープン= F 」、 "RB" 
    データ= f.read() 戻りデータ
 デフfoo2は():=オープン(F "index2.html"、 "RB" データ= f.read()戻りデータデフアプリケーション(環境、start_responseを) :プリント( "パス"、環境[ "PATH_INFO" ])パス=環境[ "PATH_INFO" ] start_responseを( '200 OK'、[( 'のContent-Type'、 'text / htmlの' )])であればパス==」 /サイモン」:戻る[foo1は()]のelifパス== "/ zhurui" リターン[foo2は()]他:戻る[B "404" ]#リターン[B '!<H1>こんにちは、ウェブ</ H1>'] のhttpd =はmake_server( ''、8080 、アプリケーション)プリント( 'ポート8000上でHTTPをサービング...' #开始监听HTTP请求:httpd.serve_forever()

アナログWebフレームワーク:

#_ * _コーディング:UTF-8 _ * _ 
#著者:サイモン
#日時:2019年9月28日午後2時39分
#ソフトウェア:PyCharm 

wsgiref.simple_serverインポートからはmake_server 

インポート時の


デフfoo1は(REQ):
    F =オープン(」 index1.html」、 "RB"  データ= f.read() の戻りデータデフfoo2は(REQ):F =オープン( "index2.html"、 "RB" データ= f.read()の戻りデータデフログイン( REQ):プリント(REQ [ "QUERY_STRING" ])リターンB "歓迎!" デフ申し込み(REQ):DEF通過ショータイム(REQ)を:時間= time.ctime()#リターン( "<H1>時間:%S </ H1>" %のSTR(倍))。エンコード( "UTF8")F =オープン(」f.read()データ= data.decode( "UTF8" データ= data.replace( "{{時刻}" 、STR(倍))戻りdata.encode( "UTF8" デフルーター():url_patterns = [( "/ログイン" 、ログイン)、( "/申し込み" 、申し込み)、( "/ zhurui" 、foo2は)、( "/サイモン" 、foo1の)、( "/ショータイム" 、ショータイム)]戻りDEF url_patterns アプリケーション(環境、start_responseを):プリント( "パス"、環境[ "PATH_INFO" ])パス=環境[ "PATH_INFO" ] start_responseを( '200 OK'、[( 'のContent-Type'、 'text / htmlの' )] )url_patterns = ルータ()FUNC = アイテムのためなしurl_patterns:もしアイテム[0] == パス:FUNC =項目は、[1 ]ブレークの場合、FUNC:リターン[FUNC(環境)]他:戻る[B "404" ]#リターン[B '!<H1>こんにちは、ウェブ</ H1>'] のhttpd =はmake_server( ''、8080 、アプリケーション)プリント( 'ポート8000上でHTTPをサービング...' #开始监听HTTP请求:httpd.serve_forever()

 二、MVCモデルとMTV

有名なMVCパターン:いわゆるMVC Webアプリケーションは、モデル(M)、コントローラ(C)、ビュー(V)は、3つに分かれており、プラグインなど、一緒にそれらの間の疎結合を接続します。

ビジネス・オブジェクト・モデルとデータベースオブジェクト(ORM)を担当し、ビューはユーザー(ページ)との相互作用のために責任がある、コントローラ(C)ユーザーが完全なコールモデルからの入力を受信し、ユーザの要求を表示します。

 

 MTVモデル上Djandoは、本質的にMVCモデルとの間だけでなく、構成要素および疎結合の関係を維持するためには差はありませんが、多少異なる定義、MTVのDjangoの代わり:

モデル(モデル):ビジネス・オブジェクトとデータベース・オブジェクトの責任(ORM)

テンプレート(テンプレート):ページがユーザーに表示さどのように責任

ビュー(Viewは):ビジネスロジックを担当し、かつ適切な時期にモデルとテンプレートを呼び出します

また、DjangoのURLディスパッチャがあり、それはに対処するためのビューのページ要求の異なるポイントのURLの役割で、その後、モデルとテンプレートの適切なビューを呼び出します

 

 三、Djangoのプロセスおよびコマンドラインツール

3.1ジャンゴ・プロセス:

Djangoの
    #のインストールが:PIP3はジャンゴをインストールし
          、環境変数を追加する
    #1プロジェクトの作成
       django- ADMIN startprojectの//個人用サイトのプロジェクトを作成するために
       --- 個人用サイト --- settings.py  --- url.py --- wsgi.pyを---- 管理.py(ブートファイル)#2 APP作成Pythonのmannage.py startappののapp01#3設定設定TEMPLATES STATICFILES_DIRS = (os.path.join(BASE_DIR、 "静" 我々だけ使用することができます)、)STATIC_URL = '/静的/' #をSTATIC_URL、しかしSTATIC_URLはあなたのSTATICFILES_DIRSを押すと、デザインコードのニーズに応じて第4位に行きますレンダリングテンプレートを使用するには、#5 view.py url.py(REQ、「index.htmlを」manage.pyのrunserver 127.0.0.1プロジェクトのpythonを起動する)#6 :8090#7は、データmodel.pyを操作し、データベースに接続されています



3.2ジャンゴコマンドライン:

django-admin.py Djangoはタスクを管理するためのコマンドラインツールで、manage.pyは、Djangoのプロジェクトでは、それぞれがmannage.pyを持つことになり、簡易包装のdjango-admin.pyです。

<1> Djangoプロジェクトを作成するには:django-admin.py startprojectの個人用サイト

        カレントディレクトリは、個人用サイトのプロジェクトのディレクトリ構造を生成します次のとおりです。

ツール内部manage.py ---------------- Djangoプロジェクトには、Djangoのシェルとデータベースを呼び出すことができます。

settings.pyは----------------プロジェクト、情報、プジョーや他の変数の数の試運転作業を含むデータベースのデフォルト設定が含まれています。

<2>個人用サイトのディレクトリにブログアプリケーションを作成します:python manage.py startappのブログを

 

ショートカットを作成pycharm使用します。

python manage.pyのrunserver 8080:<3> Djangoプロジェクトを開始します

       私たちのジャンゴが起動するように!私たちが訪問するとします。http://127.0.0.1:8080 /あなたが見ることができるとき。

 三、DjangoのURL(ルーティングシステム)

DjangoのディレクトリサイトのサポートなどのURLの構成(URL confに)。それは本質的にURLパターンとURLパターンのために呼び出す関数のビュー間のマッピングテーブルです。あなたはそのURLのためにそのコードを呼び出す、このURLのためのコードを呼び出すと、Djangoを指示するようにしています。

= urlpatterns [ 
    URL(正規表現、ビュー機能、パラメータ、エイリアスを表示)
]

パラメータ:

●正規表現文字列

●呼び出し可能なオブジェクトは、典型的には、文字列パスビュー機能は、ビューまたは関数として指定されます

●オプションのパラメータは、デフォルトのビュー機能(辞書)に渡されます

●オプションのパラメータ名

例:

from django.contrib import admin
from django.urls import path
from django.conf.urls import url

from blog import views

urlpatterns = [
    path(r'admin/', admin.site.urls), path(r'show_time/', views.show_time), url(r'article/(\d{4})$', views.article_year), url(r'article/(?P<year>\d{4})/(?P<month>\d{2})', views.article_year_month), url(r'article/(?P<year>\d{4})/(?P<month>\d{2}/\d+)', views.article_year_month), ]

 

おすすめ

転載: www.cnblogs.com/hackerer/p/11614409.html