Djangoテンプレート言語-1:完全なデータ取得の例

、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は、となります



おすすめ

転載: blog.51cto.com/yishi/2435284