ディレクトリ
1018知人のWebフレームとフレームジャンゴ
HTTPプロトコル
ハイパーテキスト転送プロトコル
サーバー:24時間、固定IP、高同時実行をサポート
図1に示すように、4つの特性
TCP / IPベースのアプリケーション層に作用する1、
要求応答に基づいて2、
3、何の状態ない - トークンユーザーの状態なので、クッキーのみ、セッションを保存しません
4、コネクションレス
ロング接続:WebSocketの(大きなパッチのHTTPプロトコル)
図2に示すように、データ・フォーマット
一般的に二つのフォーマットは同じです
図1に示すように、リクエスト形式
请求首行(请求方式、协议版本...)
请求头(一大堆k:v键值对)
# 这里一定要换行,也可以写个\r\n
请求体(真正的数据。发post请求的时候才会有,如果是get请求不会有)
要求モード:
- データを他の人に向けて:要求を取得
- ポスト要求は:他人にデータを送信する(例:ユーザログイン)
URL:ユニフォームリソースロケータ
図2に示すように、応答形式で
响应首行
响应头
# 这里一定要换行,也可以写个\r\n
响应体
図3に示すように、応答ステータスコード
数字でいくつかの特定の意味を表します。
- 1XX:サーバーは、データが処理されている、あなたは追加のデータを提出し続けることができます正常に受信しました
- 2XX:サーバーの成功応答(200-要求が成功しました)
- 3XX:リダイレクションは、(例えば、ウェブサイトの機能をクリックしても、自動的に別の関数にジャンプ)
- 4XX:リクエストエラー(404要求されたリソースが存在しない、403回のアクセスが拒否されました(リソースが存在していますが、条件を満たしていません))
- 5XX:内部サーバーエラー(500サーバーエラー)
純粋な手のラインとWebフレームワーク
Liteの
ライン上のサーバーを記述し、ブラウザがアクセス127.0.0.1:8080
ハロー赤ちゃんのページに表示することができます
import socket
server = socket.socket()
server.bind(('127.0.0.1', 8080))
server.listen(5)
while True:
conn, addr = server.accept()
data = conn.recv(1024)
print(data)
conn.send(b'HTTP/1.1 200 OK\r\n\r\nhello baby~')
conn.close()
アップグレード
Wsgiref処理モジュールは、ソケットとHTTPプロトコル処理の代わりに使用することができます
from wsgiref.simple_server import make_server
# 用来对socket处理和http协议的处理
def run(env, response):
"""
:param response: 响应相关的所有数据
:param env: 请求相关的所有数据
:return:
"""
response('200 OK', [])
# print(env)
current_path = env.get('PATH_INFO')
if current_path == '/index':
return [b'index']
elif current_path == '/login':
return [b'login']
else:
retutn [b'404 error']
if __name__ == '__main__':
server = make_server('127.0.0.1', 8080, run) # 实时监听该地址,只要有客户端来连接,统一交给run函数去处理
server.serve_forever() # 一直启动服务端
静的および動的なページ
静的なページ
データは同じ年、死んで書かれています
動的なページ
データはリアルタイムで取得され
例えば:
- 現在の時刻表示を取得するためのフロントエンドにバックエンド
- ディスプレイのフロントエンドに、バックエンドのデータ・アクイジション・データベース
Jinja2のモジュール - 演出テンプレート
バックエンドは>>>>>>>レンダリングHTMLページテンプレートにデータを取得し
Jinja2のモジュールテンプレートのレンダリングに設計された、HTMLページにデータを置きます
(Pythonの構文の後端部に非常に近い)テンプレートの構文:
辞書値のフロントページには、基本的な文法をサポートすることができます可能にします
<p>{{ user }}</p>
<p>{{ user.name }}</p>
<p>{{ user['pwd'] }}</p>
<p>{{ user.get('hobby') }}</p>
また、例えば、のループをサポートすることができます。
<body>
{% for i in user_list %}
{% endfor %}
</body>
三の大PythonのWebフレームワーク
ジャンゴ
大型と空母のように、特に特別な機能が付属して、時々あまりにも重いです
フラスコ
小さいながらも優れた、サードパーティのモジュールへの依存度の特別な機能は、レンジャーズに似て非常にまれですが、フラスコ、サードパーティのモジュールすべてがジャンゴ以上になるまで追加した場合、それは、特に具体的には、サードパーティ製のモジュールの数が多いのですが、付属しています、これは、問題がある可能性があります
竜巻
非同期ゲームサーバを開発するために、非ブロック(ソフトウェア実行されている状態)、高効率、高速なハードウェアを(モードタスクが提出します)
ウェブフレーム部
A:ソケット部
B:ルーティングとビュー機能との対応関係
C:テンプレート構文
以下のための3つの主要な枠組みについては
ジャンゴ:
誰か他の人の、wsgirefモジュールの使用
あなた自身のBを書きます
独自のCを書きます
フラスコ:
誰か他の人の、WERKZEUG(ベースwsgiref)の使用
あなた自身のBを書きます
他者とC、Jinja2のモジュール
竜巻:
三つには、自分自身を書くことです
ジャンゴ
注意事項
1、コンピュータ名は、中国を持つことができません
2、ウィンドウは、プロジェクトpycharmです
3、中国内のプロジェクト名を使用しないようにしよう
問題のジャンゴバージョン
1.11.13 - 1.X 2.Xは1.11.9をお勧めします
Djangoのインストール
ジャンゴをPIP3インストール== 1.11.11
アプリは大学の内部に似ていながら、Djangoプロジェクトは、大学に似て
、実際のアプリケーションで使用されているジャンゴ
スタンドアローンのアプリの機能に相当し
、ユーザ機能
管理
Djangoのサポートなど、多くのアプリ
使い方
コマンドラインを使用します。
ジャンゴ-adminのstartprojectの個人用サイト:プロジェクトジャンゴを作成します。
Djangoプロジェクトを開始します。個人用サイトのフォルダに高度な、そしてパイソンmanage.pyのrunserver
アプリケーションのアプリを作成します:python manage.py startappのapp01
新しく作成されたプロファイル設定を登録する必要がありアプリは、pycharmはあなたが書くためのプロジェクトを作成するときに最初にアプリケーションを登録手助けして、アプリを作成します。その後、インストール、構成ファイルでアプリ名の設定を追加する必要があります。注意してください。
注:自動的にテンプレートフォルダを作成していない、あなたがあなた自身を作成する必要があり、Djangoプロジェクトを作成するには、コマンドラインを使用して、手動で設定ファイルで空のリストテンプレートに設定を記述する必要が、os.path.joinを書く(BASE_DIR、「テンプレート「)
pycharm使用:
新規プロジェクト>>> Djangoは>>>、ボックス最初のドロップダウンが総合2、その後、2番目のドロップダウンボックスには、アプリ名に直接書き込むために、最初の列の項目名に直接書き込みます。
起動時にDjangoプロジェクトは、確認しているDjangoプロジェクトの一つのポートだけ
プロジェクト名:
プロジェクトフォルダと同じ名前のファイル
ユーザーのプロフィールにさらさsettings.py--
ルーティングとの対応関係urls.py--ビュー機能
アプリケーション名
移行フォルダ - 保存されたデータベースの移行レコード
admin.py - ジャンゴ管理者
apps.py--登録関連
models.py--モデルクラス
tests.py--テストファイル
views.py--ストアビュー機能
フォルダテンプレート - htmlファイルの多くを保存するためのテンプレートフォルダ
manage.py - ジャンゴファイルエントランス