HTMLフォームは、古典的な方法でインタラクティブなWebサイトです。 ジャンゴを持つユーザーによって提出された処理されたフォームデータ。 HTTPリクエストの HTTPプロトコル「-要求に対する応答」作業の方法。クライアントが要求を送信すると、データは要求に添加してもよいです。リクエストを解析することによって、サーバは、顧客からデータを取得することができ、およびURLに基づいて特定のサービスを提供します。
GETメソッドは、 ユーザの要求を受信するために、プロジェクトsearch.pyにファイルを作成するには: / HelloWorldの/ HelloWorldの/ search.pyファイルのコードを: #を- * -コーディング:UTF-8 - * - 。 から django.utils.httpwrappers インポートのHttpResponse からジャンゴ.shortcuts インポートrender_to_responseの #のフォーム DEFのsearch_form(リクエスト) を返す(render_to_response ' search_form.htmlを' ) #受信要求データ DEF 検索(リクエスト): request.encoding = 'UTF-8 ' IF ' Q ' で request.GET`` ` そして `` request.GET`` [ ' Q ' ]: メッセージ = ' あなたが検索するもの:' + `` request.GET`` [ ' Qは' ] 他: メッセージ = ' あなたは、空のフォームを提出した' 返すのHttpResponse(メッセージ)
在模板目录テンプレート中添加search_form.html表单: / HelloWorldの/テンプレート/ search_form.html文件代码: <!DOCTYPE HTML> <HTML> <HEAD> <メタ文字セット= " UTF-8 " > <タイトル>(runoob.com )</ TITLE> </ HEAD> <BODY> <フォームアクションは= " /検索"メソッド= " 得る" > の<input type = " テキスト"名前= " Q " > の<input type = " 提出"値= " 搜索" > </フォーム> </ BODY> </ HTML>
次の形式を変更するurls.pyルール: / HelloWorldの/ HelloWorldの/ urls.pyファイルコード: から django.conf.urls インポートURL から。輸入ビュー、TESTDB、検索 urlpatternsを = [ URL(R&LT ' ^ $こんにちは' 、ビュー。こんにちは)、 URL(R&LT ' ^ TESTDBの$ ' 、testdb.testdb)、 URL(R&LT ' ^ $フォーム検索' 、search.search_form)、 URL(R&LT ' ^ $検索' 、search.search)、 ]
アクセスアドレスhttp://127.0.0.1:8000/search-formと検索
POSTメソッド GETメソッドを使用して上記の。表示ビューと要求処理は、二つの機能の処理に分けられます。 データを提出するときに、より一般的に使用されるPOSTメソッド。この方法を次のように使用し、そしてURLとおよび機能を処理し、ビューは、処理要求を示しています。 Post.htmlは、テンプレートで作成しました: / HelloWorldの/テンプレート/ post.htmlファイルのコード: <!DOCTYPE HTML> <HTML> <HEAD> <METAのcharset = "UTF-8 " > <タイトル>(runoob.com)</タイトル> </ head> <body> <FORM ACTION = " /検索POST " METHOD = " POST " > {%csrf_token%} の<input type = " テキスト"名前= " <INPUT TYPE = " 提出"値= " 送信" > </フォーム> <P> {{RLT}} </ P> </ BODY> </ HTML>
テンプレートの終わりに、帳票処理結果のRLTマークプレースホルダを追加します。 テーブルとそこ{%csrf_token%}タグ。CSRFは、クロスサイトリクエストフォージェリの略です。これは、要求を提出装っDjangoの防止が提供する機能です。フォームを送信するPOSTメソッドは、このラベルを持っている必要があります。 :POSTリクエスト処理するHelloWorldの機能search_postディレクトリおよび使用中のSearch2.py新しいファイル / HelloWorldの/ HelloWorldの/ search2.pyファイルのコードを: #- * -コーディング:UTF-8 - * - 。 から django.shortcuts インポートレンダリング からジャンゴ。 views.decorators インポートCSRF 位POST要求データ受信 DEF :search_post(リクエスト) CTX = {} IF request.POSTのを: CTX [ ' RLT ' ] = request.POST [OF' Q ' ] を返す(リクエスト、レンダリング" post.html "、CTXを)
#- * -コーディング:UTF-8 - * - から django.shortcutsがインポートレンダリング から django.views.decorators インポートCSRF #接收POST请求数据 DEF search_postを(要求): CTX = {} もしrequest.POST: CTX [ ' RLT ' ] = request.POST [ ' Q ' ] リターン(要求、レンダリング" post.html "、CTX)を
urls.py规则修改为如下形式: / HelloWorldの/ HelloWorldの/ urls.py文件代码: から django.conf.urls インポートURL から。インポートビュー、TESTDB、検索、search2 urlpatterns = [ URL(R ' ^こんにちは$ ' 、view.hello)、 URL(R ' ^ TESTDB $ ' 、testdb.testdb)、 URL(R ' ^検索フォーム$ ' 、 search.search_form)、 URL(R ' ^ $を検索' 、search.search)、 URL(R ' ^サーチポスト$ ' 、search2.search_post)、 ] 訪問のhttp://127.0.0.1:8000/search-post表示
上記の例のディレクトリ構造が完了した後: HelloWorldの | - HelloWorldの | | - __init__ の.py | | - __init__ に.pyc | | - search.py | | - search.pyc | | - search2.py | | - search2.pyc | | - のsettings.py | | - settings.pyc | | - testdb.py | | - testdb.pyc | | - のurls.py | | - urls.pyc | | - - view.py | | - view.pyc | | - wsgi.py | ` - wsgi.pyc | -TestModel | | - __init__ の.py | | - __init__ に.pyc | | - のadmin.py | | - admin.pyc | | - apps.py | | - マイグレーション | | | - 0001_initial.py | | | - 0001_initial.pyc | | | - __init__ の.py | | ` - __init__ に.pyc | | - models.pyの | | - models.pyc | | - tests.py | ` - のviews.py | - db.sqlite3 | - manage.py ` -テンプレート | - base.html | - hello.html | - post.html ` - search_form.html
Requestオブジェクト の最初のパラメータの各機能については、ビューのHttpRequestオブジェクト、このハローのように()関数です から django.utils.httpwrappers インポートのHttpResponse DEF こんにちは(要求): 返すのHttpResponse(「Hello Worldのを」) のHttpRequestオブジェクトは、現在のリクエストが含まれていますURLの情報の一部:
Requestオブジェクトは、いくつかの便利なメソッドがあります。
QueryDictオブジェクト
のHttpRequestオブジェクト、GETやPOSTでは例django.http.QueryDictクラス属性です。
単結合の場合に対応する複数の値を処理するための同様の辞書のQueryDictカスタムクラス。
すべての標準辞書のメソッドを実装するのQueryDict。また、いくつかのユニークな方法があります。
また、いくつかの方法は次の表を参照してのQueryDictがあります。