呉ユーキション - 自然生まれのDjangoフレームワーク開発ノート:Djangoのフォーム

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.py​​c
 | | - 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があります。

 

おすすめ

転載: www.cnblogs.com/tszr/p/12127574.html