2つのコアで生成されたHTTPリクエストオブジェクト:
httpリクエスト:HttpRequestのオブジェクト
HTTPレスポンス:のHttpResponseオブジェクト
場所:django.http
我々は、パラメータ要求を使用する前にHttpRequestの検出方法である:でisinstance(リクエスト、HttpRequestの)
1. HttpRequestのプロパティとメソッド
#パス:ページ要求への完全なパスは、ドメイン名は含まれません #の 図で使用されるHTTPリクエスト文字列の方法:#メソッドを。ALLは、表現をCAPS。例の場合は #1 #req.method == "GET" IF: #1 #のdo_somethingを() # #ELSEIF req.method == "POST": #1 #のdo_something_else() # #GET:HTTP GETは辞書ライクオブジェクトのすべてのパラメータが含ま #の #をPOSTは:すべてのHTTP POSTパラメータを含む辞書のようなオブジェクト #1 #サーバは、それにより、フォームのフォームを言うことであるPOSTリクエストの空の場合も発生する可能性が受け 、リクエスト#HTTP POSTメソッドを送信するが、フォームデータを持っていない可能性があり、したがってできません使用 req.POST場合はHTTP POSTメソッドを使用するかどうかを判断するために#を、あなたはreq.methodを使用する必要があります==場合は、「POST」は # # # #クッキー:クッキーは、すべての標準のPython辞書オブジェクトが含まれています。キーと値は文字列です。 # #FILES:すべてアップロードされたファイルを含む辞書のような物;キーをFILESに各の<input type =「ファイル」名である =「」/> タグの属性名の値は、各値でもあるFILES含まれている標準のPython辞書オブジェクトには、次の3キー: #1 #ファイル名:ファイル名をアップロードして、文字列で表さ #のCONTENT_TYPE:コンテンツタイプのファイルアップロード コンテンツ#:元のコンテンツアップロードされたファイル # # #ユーザー:django.contribです現在ログインしているユーザを表す.auth.models.Userオブジェクト。訪問ユーザーが現在ある場合は #ありませんログイン、ユーザーはdjango.contrib.auth.models.AnonymousUserがあるインスタンスが初期化されます。あなた #は、ユーザログインかどうかを識別するために、ユーザーのis_authenticated()メソッドを渡すことができます: #()をreq.user.is_authenticatedのIF;のみジャンゴAuthenticationMiddlewareを有効に プロパティが使用可能に#があるとき # #セッション:のみ読み書きプロパティ、辞書オブジェクトの現在のセッションのために、彼らは財産でセッションサポートジャンゴを有効にしているが利用可能です。 #メソッド 例えばget_full_path():HTTP://127.0.0.1:8000 / index33 /名前= 123、 結果req.get_full_path()取得が= 123 ?? / index33 /名前で Req.path:/ index33
2.のHttpResponseプロパティとメソッド
HttpRequestオブジェクトの場合、それは自動的にジャンゴによって作成された、しかし、のHttpResponseオブジェクトは、私たち自身を作成する必要があります。各ビューには、要求処理方法のHttpResponseオブジェクトを返す必要があります。
HttpResponse类在django.http.HttpResponse
HttpResponse従来の方法に比べて延びるオブジェクト:
ページのレンダリング:()(推奨)<BR> render_to_response()、レンダリング (「パス」)をリダイレクトする:ページジャンプを 地元の人々について():直接テンプレートに渡されたすべての変数で機能することができます
デフshow_time(リクエスト): #リターンのHttpResponse( "ハロー") T = time.ctime() NAME = 'LSF' #リターンレンダリング(リクエスト、 'index.htmlを'、{ "T":T、 'name'の名前}) #戻りrender_to_response( 'index.htmlを'、{ "T":tは、 'name'の名前は}) ((リクエスト、 'index.htmlを'、地元レンダリング戻り))
デフ(要求)を登録します。 request.method == "POST"場合: プリント(request.POST.get( 'ユーザー')) プリント(request.POST.get( '年齢')) #リターンレンダリング(リクエスト、「ログイン.htmlを') リターンリダイレクト(' /ログイン/ ') ')register.html(要求は、レンダリングを返す' :デフログイン(リクエスト)が login.htmlと'(要求を、レンダリング返します')
レンダリングとの間の差をリダイレクトします。
- HTMLに必要なデータベースにデータをロードする必要性をレンダリングするためにページのテンプレート言語をレンダリングし、すべてのログインビュー機能を書くに加えて、この部分の、あなたはまた、レジスタにコードの重複、無デカップリングを記述する必要があります。
- あなたは後にするときにリフレッシュが再度ログインする必要がありますので、URL /ログイン/にジャンプ、まだ/ /登録されません。