ディレクトリ
HTTPプロトコル
ハイパーテキスト転送プロトコル(Hの yper T EXT T ransfer Pの rotocol、HTTP)は、分散アプリケーション層プロトコル、協調、ハイパーメディア情報システムです。HTTPは、基礎となるデータ通信ワールド・ワイド・ウェブです。
1999年6月にはRFC 2616に公開、今日広く使用されたHTTPプロトコルバージョン--http 1.1を定義します。
HTTPの作品:
HTTPプロトコルは、要求/応答モデルを使用しています。クライアントは、サーバ要求パケット、要求された要求パケット、URL、プロトコルバージョン、および要求されたデータ要求ヘッダーを含む方法を送信します。プロトコル・バージョン応答、成功またはエラーコード、サーバ情報、レスポンスヘッダと応答データの内容を含むサーバ応答ステータス行、。
以下は、HTTPリクエスト/レスポンスのステップです:
- クライアントは、Webサーバーに接続する
TCPソケット接続を確立するために、HTTPクライアント、HTTPポートを備え、通常のブラウザ、Webサーバ(デフォルトは80)。 - HTTPリクエスト
のWebサーバ、リクエストラインで要求パケット、リクエストヘッダ、空白行にTCPソケットテキスト、クライアントの要求メッセージで送信され、4部は、データを要求します。 - サーバーは要求を受け入れ、HTTPレスポンスを返す
Webサーバーが要求されたリソースを見つけ、要求を解析します。リソースサーバのコピーは、クライアント側で読み取るTCPソケットを、書き込みます。応答状態からライン、頭部に応答して、データを4部に応答し、空白行。 - 取り外し可能な接続のTCPコネクション
接続モードが近い場合、サーバはTCPコネクションを解放する、TCP接続、クライアントパッシブ近い接続を閉じ、接続モードアライブ場合、接続は、しばらくの間維持される時間中に要求を受信し続けることができます。 - クライアントブラウザは、HTMLコンテンツ解析し
、要求が成功したステータスコードであることを確認するために、最初に解決クライアントのブラウザのステータス行を。そして、HTML文書と文書数バイトの文字セットを通知するために、各レスポンスヘッダ、レスポンスヘッダを解析します。クライアントのブラウザは、そのHTML構文に従ってフォーマット、HTMLレスポンスデータを読み込み、ブラウザウィンドウに表示します。
たとえば、次のプロセスを通過しEnterキーを押し、ブラウザのアドレスバーにURLを入力します。
- DNSサーバへのブラウザ要求は、IPアドレスに対応するURLのドメイン名を解決するために、
- IPアドレスとデフォルトポート80、およびサーバーに応じてTCPコネクション確立のIPアドレスを解析した後、
- 問題HTTPリクエスト、サーバに第3のデータのTCPスリーウェイハンドシェイクパケットと要求パケットの読み出しファイルブラウザ(ファイルの後部に対応するURLのドメイン名)。
- サーバーは、ブラウザのリクエストに応答し、ブラウザに対応したHTMLテキストを送信します。
- TCPコネクションをリリース。
- HTMLテキストとブラウザが内容を表示します。
HTTPの特徴:
httpプロトコルは、TCP / IPプロトコルの上のアプリケーション層プロトコルです。
要求に基づいて-応答モデル:HTTP合意、クライアントからのリクエストを発行し、サーバは最後の要求とリターンに応答します。要求が受信されるまで、言い換えれば、間違いなく通信クライアントを確立し始める開始、サーバーが応答を送信しません。
ステートレス保存:HTTPは、非保存状態、即ち、無状態(ステートレス)プロトコルです。HTTPプロトコル自体は、要求及び格納された応答との間の通信状態はありません。HTTPでこのレベルのことを、要求または応答を送信するためのプロトコルは、何も持続的な治療を受けました。
新しい要求が送信されたときにHTTPプロトコルを使用し、それは、対応する新たな応答を生成します。契約自体は、要求または応答情報パケットの前にすべてのものを保持しません。これは、プロトコルの拡張性、およびHTTPプロトコルは、具体的にとてもシンプルに設計されていることを保証するために、すぐに多数のトランザクションを処理することです。
接続なし:制限なしを意味しないが、接続ごとに1つだけの要求を添付されていません。サーバがクライアントの要求を処理し、顧客の応答を受信した後、すなわち、切断。このようにして、送信時間を節約することができ、および並行性を向上させることができ、持続的な接続を確立することはできませんし、各ユーザーは、応答時間を要求し、クライアントサービスを中止しました。しかし、2つの方法で接続なしに、早期httpプロトコルを直接オフ、応答の要求であるが、今のHTTPプロトコルバージョン1.1ではありません直接切断が、数秒待って、それらの数秒後にそれが何であるかを、ユーザーがユーザーはこの数秒以内に新しい要求がある場合、それはユーザーが新しいを送信しない場合は、数秒を介してメッセージを送受信するために、接続を通過する前に、まだ、次の動作を待っています要求は、それは、切断されます、これは効率を高め、接続に時間がかかるため、接続を確立するために、短い時間内での回数を減らすことができ、デフォルトでは現在、3秒であると思われるが、今回、我々は、バックエンドのコードをしています最適な待機時間の統計を分析するために彼らのウェブサイトのサイトのユーザーの行動に応じて自分自身を調整します。
HTTPリクエストメソッド:
- GET:指定されたリソース要求に「ショー」を発行。GETメソッドは、動作の「副作用」を生成するために使用すべきではない、読み出したデータに使用する必要があります。
- POST:、指定されたリソースへの要求(フォームの送信やファイルのアップロード)を処理するためのサーバーをデータを提出します。ここの要求に含まれるデータ。
- HEAD:GETメソッドと同様に、サーバにリソース要求を指定されています。しかし、サーバーは、この記事のリソースセクションに戻されることはありません。その利点は、あなたが「リソースに関する情報」(あるいはメタ情報と呼ばれるメタデータ)を取得できるのすべての内容を転送することなく、このメソッドを使用することができるということです。
- PUT:最新の指定されたリソースの場所に自分のコンテンツをアップロードします。
- DELETE:Request-URIによって識別されるリソースを削除するには、サーバーを要求します。
- TRACE:主にテストや診断のために、サーバーが受信した要求エコー。
- OPTIONS:このメソッドは、サーバーがリソースによってサポートされているすべてのHTTPリクエストメソッドを返すことができます。代わりに、リソース名の、OPTIONS要求がWebサーバーに送信されます「*」を使用すると、サーバーの機能が正常に動作しているテストすることができます。
- CONNECT:HTTP / 1.1プロトコルは、プロキシ・サーバ・パイプライン・モードとの接続のために予約することができます。(暗号化されていないHTTPプロキシサーバを経由して)リンクは、一般的に使用されるSSL暗号化サーバです。
- パッチ
注意事項:
- メソッド名は大文字と小文字が区別されます。リソースの要求は、対応する要求メソッドをサポートしていない場合、サーバが認識していないか、対応するリクエストのメソッドをサポートしていない場合、サーバは、(方法許可されていない)ステータスコード405を返すべきステータスコード501を返すべきである(ません実装されています)。
- HTTPサーバは、少なくともGETとHEADメソッドを実装する必要があり、他の方法はオプションです。もちろん、実装のすべてがそれぞれのマッチングセマンティック定義をサポートする必要があります。上記の方法に加えて、特定のHTTPサーバの拡張方法は、カスタマイズすることができます。例えばPATCH(RFC 5789で指定されたメソッド)リソースを変更するための局所適用のため。
モード要求:GETとPOSTリクエスト(フォームの例フォーム)
データは内部要求ラインであるURLを、配置された後にセグメンテーションURL?提出などEditBookなどのパラメータ、の間に接続されたとするデータを送信し得るか。行うためのコンテンツ型内部名= TEST1&ID = 123456(要求ヘッダそのようなパラメータ形式、後で話す)はリクエストボディのHTTPパケットのPOSTメソッドにより送信されたデータです。
(URLの長さにブラウザの制限ため)、およびPOSTメソッドで送信されたデータが限定されるものではなく、限られたデータのサイズを提出GET。
さまざまな方法でデータを取得するためのサーバ要求で要求をGETとPOST、別のやり方側の自社サービス要求データを取るための時間です。
通常、データを取得するための取得、POSTは、一般的にデータを提出するために使用。
URL:ユニフォームリソースロケータ
5つの基本的な要素は、単純なアドレスが含まれるから、ハイパーテキスト転送プロトコル(HTTP)ユニフォームリソースロケータインターネットは情報を取得します:
- プロトコルを転送します。
- URLレベルマークシンボル([//]、固定されるように)
- 資格情報を必要なリソースへのアクセス(省略してもよいです)
- サーバー。(多くの場合、ドメイン名、時々、IPアドレスなど)
- ポート番号。(デフォルト値はHTTPであればデジタル、示される「80」を省略してもよいです)
- パス。(パス内の各ディレクトリ名の間に「/」文字差で)
- クエリ。フォームパラメータは(モード、出発点として、「?」の文字、データ、通常はURLエンコードされたUTF8を分離するために、各パラメータ「&」分離し、「=」パラメータ名を取得し、文字の問題の競合を避けるために、 )
- 断片。出発点として、「#」文字で
例えばhttp://www.luffycity.com:80/news/index.html?id=250&page=1するには、ここで:
; HTTPは、プロトコルで
www.luffycity.com、ドメインネームサーバ、
80、ネットワークサーバ上のデフォルトのポート番号であり、デフォルトが表示されない;
/news/index.htmlは、パス(URIである:対応に直接配置しますリソース);
上記のid = 250&ページ= 1は、クエリです。
ほとんどのWebブラウザは、ページ「入力するユーザーを必要としないWebコンテンツの大半は、ハイパーテキスト転送プロトコルファイルであるため、一部には:// HTTPを」。同様に、「80」ので、通常述べられていない、ハイパーテキスト転送プロトコルファイルを使用するポート番号です。一般的に、ちょうどユニフォームリソースロケータを入力すると、ユーザ(www.luffycity.com:80/news/index.html?id=250&page=1)その上の一部です。
ハイパーテキスト転送プロトコルは、サーバーが別のページアドレスにブラウザをリダイレクトすることを可能にするため、サーバは、多くのユーザは、WWWのように、ウェブアドレスの一部を省略することができます。この省略の技術的にウェブアドレスが実際には別のWebアドレスで、ブラウザ自体が新しいアドレスを渡すかどうかを決定することができない、サーバーは、リダイレクトタスクを完了する必要があります。
HTTPリクエストのフォーマット
リクエストフォーマット:
要求ヘッダー要求ラインブランクラインデータ要求
リクエストライン:
リクエストメソッド(GET / POST)ルーティングのURL(パス)HTTP / 1.1
HTTPの応答プロトコル
応答形式:
レスポンスボディ空白ラインヘッドに応じてステータス行
ラインステータス:
HTTP / 1.1 200 OK
HTTPステータスコード
最初の行は、HTTPの現在のバージョンに続いてHTTPレスポンス、3桁のステータスコード、およびフレーズの状態の記述、スペースで区切られた互いのステータス行です。
電流応答のタイプを表す第1桁のステータスコード:
- 1XXメッセージ - 要求を受信したサーバ、処理が続行
- 2xxの成功 - サーバ要求は理解し、正常に受信され、受け入れられています
- 3XXリダイレクション - 次のステップは、この要求を完了する必要があります
- リクエストに4xxエラー - 要求は、字句エラーを含むか、実行することはできません
- 5xxのサーバーエラー - リクエストを適切に処理中にサーバーエラーが発生しました
タイプ | カテゴリ | 理由フレーズ |
---|---|---|
1XX | 情報(情報のステータスコード) | 受信した要求が処理されています |
2XX | 成功(成功ステータスコード) | 通常の要求が処理さ |
3XX | リダイレクト(リダイレクトステータスコード) | 追加の操作は要求を完了するために必要な |
4XX | クライアントエラー(クライアントエラーステータスコード) | サーバーは要求を処理できません |
5XX | サーバーエラー(サーバーエラーステータスコード) | サーバーは、要求のエラーを処理します |
301と302との間の差
301は、302リダイレクトが一時的なもので、永久的なリダイレクトです。
1)301和302的区别。
301和302状态码都表示重定向,就是说浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取
(用户看到的效果就是他输入的地址A瞬间变成了另一个地址B)——这是它们的共同点。
他们的不同在于。301表示旧地址A的资源已经被永久地移除了(这个资源不可访问了),搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址;
302表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A跳转到地址B,搜索引擎会抓取新的内容而保存旧的网址。 SEO302好于301
2)重定向原因:
(1)网站调整(如改变网页目录结构);
(2)网页被移到一个新地址;
(3)网页扩展名改变(如应用需要把.php改成.Html或.shtml)。
这种情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户得到一个404页面错误信息,访问流量白白丧失;再者某些注册了多个域名的
网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点等。
Djangoのダウンロードと簡単な例
ダウンロードしてインストールします。
pip3 install django == 1.11.9
pip3 install django == 1.11.9 -i https://pypi.tuna.tsinghua.edu.cn/simple/ # 清华源下载
プロジェクトを作成します。
1. 命令行: django-admin startproject 项目名
2. pycharm:File--New Project--Django--location中写项目路径及文件名、选择Existing interpreter(添加python解释器)
アプリケーションを作成します。
python manage.py startapp 应用名
需要在setting配置文件中,installapps的列表中,添加一个app名称作为配置。
应用下有几个文件:
models.py :之前我们写的那个名为model的文件就是创建表用的,这个文件就是存放与该app(应用)相关的表结构的。
views.py :存放与该app相关的视图函数的(逻辑)。
プロジェクト開始:
python manage.py runserver # 默认是127.0.0.1:8000
python manage.py runserver 127.0.0.1 # 设置ip,端口默认8000
python manage.py runserver 127.0.0.1:80 # 全设置,不用写80端口
実現ジャンゴに基づいて簡単な例
URLコントローラ
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^home/', views.home),]
ビュービュー
from django.shortcuts import render,HttpResponse
def home(request): # request -- 请求相关的信息对象
return render(request, 'home.html')
#模板渲染 模板就是html页面 渲染就是字符串替换
#第一个参数:request 第二个参数是html页面路径
#return HttpResponse('str') # 返回字符串数据
home.htmlテンプレートテンプレートフォルダ
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>24期官网</h1>
</body>
{#<script src="jquery.js"></script>#}
</html>
次のようにプロジェクトを開始した後、結果の実装は次のとおりです。
次のエラーを報告した場合:
今だけ1つのステップを実行する必要があり、構成設定でコメントアウトこの行は、あなたが今必要としない、CSRFの認証を追加与えるDjangoはある、内部のファイル。
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
MVCフレームワークとMTV
MVC
Webサーバの開発分野で有名なMVCパターンは、いわゆるMVCプラグイン、それらの間でのモデル(M)、コントローラ(C)及び図(V)は、3つ、にWebアプリケーションであり、疎結合ユーザビュー(ページ)との相互作用を担う接続一緒に責任を負うビジネスオブジェクトモデルデータベースマッピング(ORM)、コントローラ(URLディストリビュータ)は、以下の概略図であり、コールモデルを完了し、ユーザの要求を表示するために、ユーザ入力を受け入れます下記:
MTV
MTV Djangoの性質およびMVCパターンは同じであるが、疎結合のコンポーネントが、わずかに異なる定義との間の関係を維持するために、MTV Djangoの値は次のとおりです。
- ビジネスオブジェクトリレーショナルマッピングとデータベース(ORM)の責任:Mモデル(モデル)を表しています。
- ユーザー(HTML)にページを表示する方法の責任:Tは、テンプレート(テンプレート)を表しています。
- Vは、ビュー(ビュー)を表し:ビジネス・ロジックを担当し、かつ適切な時期にモデルとテンプレートを呼び出します。
次のように上記の3つに加えて、だけでなく、URLディストリビュータ、異なるビューに分配ページ要求プロセスのURLであるの役割、表示を必要とし、その後、適切なモデルテンプレートを呼び出し、MTV応答モードです。
一般的に、ユーザがブラウザを介して当社のサーバーへの要求(リクエスト)を開始し、要求が(データ呼に関連していない場合は、そのビュー機能は、テンプレートを返します。この時間は、ユーザーへのWebページである)、ビュー機能を訪問するために行くだろう、ビュー関数呼び出しモデル、データを見つけるためにmodelデータベース、その後、バックステップ、関数は空のテンプレートを埋めるためにデータを返す閲覧、最後のページがユーザーに返されます。