、Djangoのフォーム(形式)要求:
デフォルトでは、フォームのフォームの内容を取得するための要求をGETあるときに開きます。
POSTリクエスト、フォームの送信フォームを提出するポイント。
上記の相違点の内容を書き込むためのフォームを取得します。
django.shortcutsからのHttpResponseをインポート レンダリングインポートdjango.shortcutsから、リダイレクト ログイン(リクエスト)DEF: #要求は、ユーザによって提出されたすべての情報が含まれています。 = ERROR_MSG「」 IF request.method ==「POST」: ユーザー= request.POST.get(「ユーザー」、なし)を使用してメソッドをゲット//」のない、キー割り当てなしがある場合は、ユーザのキーを PWD =リクエスト.POST.getは(「PWD」、なし) //取得する単一のフォームでユーザーとPWD方法を入力オブジェクト属性の名前です。 ユーザー==「123」とPWD ==「123456」IF: (「http://www.baidu.com」)リダイレクトを返す 他: ERROR_MSG =「ユーザ名やパスワードは、」 レンダリング(リクエスト、「login.htmlとを返します'{' ERROR_MSG「:ERROR_MSG })
二つ、{{キー}}
キーで指定された{{}} HTMLファイルが、辞書views.pyを透過し、キー値に対応するクライアントに表示されるHTMLが典型的です。
HTML
<スパン> {{ERROR_MSG}} <スパン>
三、HTMLデータ・ディクショナリやリストを読み込みます
辞書:使用コードは、キーの読み込み読むこと:. Dict_name.key
リスト:インデックス読み取り、list_name.0を使用してください。
views.py
デフ示した(リクエスト): dict_name = { '名前': '樱'、 '年齢':19 'メール': '[email protected]'、 'FAV':[ 'サッカー'、 '歌う'、「コック']} (home.html」、dict_name要求を)描画を返します'
辞書HTML:
<P> {{dictname.name}} </ P> \\樱 <P> {{dictname.age}} </ P> \\ 19 <P> {{dictname.mail}} </ P> \\ [email protected]
HTML一覧
<P> {{list_name.0}} </ P> \\フットボール <P> {{list_name.1}} </ P> \\歌う <P> {{list_name.2}} </ P> \\クック
四、forループでHTML:
{マーカーループ、及び{%のENDFOR%用い} Endステートメントサイクルを} %%使用
{kに対する%、dict_name%でV} \\ HTML内容 <P> {{K}:{{V}} </ P> {%ENDFOR%}
//views.py リターンレンダリング(要求、 'index.htmlを' { 'LIST_NAME':[ 'A'、 'B'、 'C']}) {%のI LIST_NAMEにおける%} <P> {{I }} </ P> // A、B、C {%ENDFOR%}
五、HTMLサイクルの場合:
{条件%なら%} 1。 HTMLコンテンツ\\ <P> K {} {}:{{V}} </ P> {%}%のELIF条件2 ... {他%%} ... {%ENDFOR %}
六、views.py GET HTMLテンプレート着信データ
POSTとGET:データのHTML形式の方法があり、多くは、ある一般的に二つのタイプを使用して提出しました
1、POSTメソッド要求:一般にデータの更新、変更するため。
2は、メソッド要求GET:URLはで表示された提出し、たとえばます。http:\\ localhostを\ HW \ ID = 1&名前=デビッド、通常、サーバからのデータを要求するために使用しますか?
3、其它.put、削除、頭、オプション....
4、フォーム形式で指定されたデータアップロードタイプ、 - >のenctype =「マルチパート/フォームデータ」
views.pyデータ取得方法:
1は、POST.get(「名前」、「デフォルト」)、固有値取得要素、そうでない場合、デフォルト値が割り当てられ、
2、POST.getlist(「名前」、「デフォルト値」)多値要素のリストのために、そうでない場合、デフォルト値を割り当てます
get_Data DEF(要求): get_post = request.POST.get( 'USER_NAME')#はUSER_NAME、<INPUT名= 'USER_NAME'>という名前のHTML要素の値を取得します get_post = request.POST.get( 'USER_NAME'、なしに) #user_nameの要素が見つかりません、なし戻り get_list = request.POST.getlist( '賛成')#得るチェックボックス、HTMLの複数の値 get_get = request.GET.get( 'USER_NAME') #1 前掲 get_get = request.GET.get ( 'USER_NAME'、なし)#前掲 get_get = request.GET.getlist( 'USER_NAME')
3、FILES.get(「名前」)は 、 オブジェクトファイルのアップロード、デフォルトのファイル名を取得し、
obj.nameは、ファイル名をアップロードした
ループのすべてのデータを読み、obj.chunks()反復子がデータブロックを読みます、obj.chunksにおけるR用()
GET_FILE DEF(要求): OBJ = request.FILES.get( 'file_obj') 、F =オープン(obj.name、 '+ WB')#は、ファイル名の命名をアップロードします。 iのobj.chunksに():#反復ループは、データチャンクを読み取ります。 f.write(I) f.close()
七、views.py機能は、URLを返します。
1、レンダリング:HTMLテンプレートのパスを、形式:レンダリング(リクエスト、「HTMLテンプレート名」、転送辞書)
2、リダイレクト:完全なURLを返し、形式:( 'http://www.baidu.com')リダイレクト
3、のHttpResponse:形式のHTML文字列を返します:のHttpResponse( '<p>このは</ P>のほんの一例です')
show_data DEF(要求): Vは= 1234 ジャンプ#ステーション リターンレンダリング(リクエスト、 'index.htmlを' 、{ "辞書":V}) 局#ジャンプ外部 リターンリダイレクト(「http://www.baidu.com 「) #は、直接HTML文字列を返します。 HttpResponseを返す( '<P> WARNING!</ P>')
ファイルのアップロード:
urls.py
インポートdjango.conf.urls URL ADMINからインポートdjango.contrib インポートindex.views urlpatterns = [ URL(R&LT 'ADMIN ^ /'、admin.site.urls)を、 URL(R&LTが'^ $幹線'、index.views。電源)、#はhttp:// IP / miansは、 views.pyインデックスディレクトリで電源の機能にジャンプする ##のURL(R ''、index.views.mains )、#はhttp:// IPを、 ジャンプインデックスディレクトリ内views.py下のメイン機能 のURL(R「^電源/最大 $」、index.views.rev_file)#rを「^ $」 そうでない場合は、すべてのワードアドレスを含む^ $定義された最後の初め、ステアリング混乱 ]
index.htmlを
{{}}、{%%}テンプレート言語を使用します。同時アップロード
<!DOCTYPE HTML> <HTML LANG = "EN"> <HEAD> <METAのcharset = "UTF-8"> <タイトル>タイトル</ TITLE> </ HEAD> <BODY> <フォームアクション=のenctype "アップ" = 「マルチパート/フォームのデータ」方法=「POST」> アクション=「アップ」現在のURLのアップ+表し; //アクションは、ルートディレクトリ+アップのために、「アップ/」= URL、アクションにジャンプ // ENCTYPE、フォームをファイルは、フォーム受信することができる の<input type = "text"の名= "USER_NAME"プレースホルダ= "...入力あなたの名前" /> <INPUT名= "up_file"タイプ= "ファイル" /> = "ファイル" //タイプ、表すデータは、ファイルをアップロードすることができます 。<P> :カテゴリ内の ソフトウェアの<input type =を"チェックボックスの」値= "技术"名前= "f_type"> HTMLの<input type = "チェックボックス"値= "HTML"名= "f_type"> 编程の<input type = "チェックボックス"値= "编程"名前= "f_type" > </ P> //创建多选框 <INPUT TYPE = "提出"値 = " 送信"> </フォーム> {%} //もしF_NAME%の使用が決定された場合か、アップロードファイル、ファイルのアップロード、表示情報 <P> <スパンスタイル= "フォントスタイル:イタリック「> {{u_nameは}} < / span>を、あなたのファイルは:!{{F_NAMEは}} </ P>成功アップロード カテゴリー: {I%をF_TYPE%以下で使用するために} //選択したファイルの分類を読み取るための {{I }} {%ENDFOR%} {%%} //ではない他のアップロードがプロンプトファイル <p型>の<span>あなたによってファイルのアップロードがない!</ span>を</ p型> {%endifのの%} </ BODY> </ HTML>
テスト/ views.py
以下からのインポートをレンダリングdjango.shortcuts インポートOSの 。#ここにあなたのビューを作成壁紙 :DEF MAINS(リクエスト) #は初めてのURLを開き、index.htmlページを入力して レンダリングする(要求、「index.htmlを」)を返す DEF(要求を)rev_file: #レセプションフォームフォームデータが提出さ F_NAMEを= '' u_name = '' F_TYPE = '' IF request.method == 'POST': f_obj = request.FILES.get( 'up_file'、なし) #はオブジェクトファイルを取得し、印刷(f_obj)ファイルが__repr__または__str__が定義されているため、ファイル名が、実際の目的は、 IF f_obj: あなたは、ファイルをアップロードした場合は# F_NAME = f_obj.name u_name = request.POST.get( 'USER_NAME'、なし) f_type = request.POST.getlist( 'f_type') #のチェックボックスまたは複数のデータ型オプションオプション得る F =オープン(os.path.join( 'アップロード '、F_NAME)を、 'WB +')#のmanage.pyのピアファイルディレクトリのフォルダをアップロードする )(f_obj.chunksに私のために:#chunksを ()、 イテレータを読み取るために使用 (I)f.writeを f.close()を レンダリングを返す({、リクエスト、 'index.htmlを' ' F_NAME ':F_NAME、' u_name ':u_name、' F_TYPE「:F_TYPE}) バック#index.htmlの内容が、その内容の文が表示されます場合は、ブラウザのURLは、となります