FormPump

ソフトウェアのスクリーンショット:
FormPump
ソフトウェアの詳細:
バージョン: 0.1.7
日付のアップロード: 20 Feb 15
開発者: Dave Mankoff
ライセンス: 無料
人気: 5

Rating: nan/5 (Total Votes: 0)

FormPumpはあなたがきれいにHTMLフォームに記入することができ、人気のあるテンプレートエンジンと統合Pythonのツールです。
FormPumpはで動作するようにHTMLフォームがずっと容易にするために書かれたPythonテンプレートエンジンの拡張機能の集合です。それは直接、あなたの入力に値を記入のあなたの入力にラベルを適用し、迅速な方法でエラーメッセージを表示することに関連する問題に取り組んでいます。これは、既存のコードに適応するために迅速で直感的かつ自然な方法でフォーム要素を作成するテンプレートにタグ/関数のセットを導入することでこれを行います。
現在、FormPumpはJinja2のをサポートしています。
の入門[Jinja2の例
(このREADMEに示されている例はJinja2のに示されている。その他のテンプレート言語は同じような使用方法があります。)
>>> formpump輸入JinjaPumpから
>>>事前パースのインポート環境から
>>> ENV =環境(拡張子= [JinjaPump])
>>> TPL = env.from_string( '' '
... {%フォーム "例"クラス= "シンプル·フォーム"%}
{%のENDLABELの%}:... {%のラベル「INPは '}の値を入力してください
... {%テキスト "INP"%}
... {%の筒%}
... '' ')
>>>印刷tpl.render()
<フォームアクション= ""クラス= "シンプル·フォーム"メソッド= "POST">
;&NBSP値を入力し、<= "6GiCLEkUToekNy8xuN8AnT2esddU8MG8"のラベル>:を
&NBSP; <入力タイプ= "テキスト"名前= "INP"値= "" ID = "6GiCLEkUToekNy8xuN8AnT2esddU8MG8" />

&NBSP;>>>印刷tpl.render(form_vars = {'例':{'INP':123}})
<フォームアクション= ""クラス= "シンプル·フォーム"メソッド= "POST">
;&NBSP値を入力し、<= "pnBP2IoFmfExTQdDZe44GKsFN6wrVOPu"のラベル>:を
&NBSP; <入力タイプ= "テキスト"名前= "INP"値= "" ID = "pnBP2IoFmfExTQdDZe44GKsFN6wrVOPu" />

上記の例では、単純なテンプレートオブジェクトは、一つの形態を含むように作成されている参照。引数なしでレンダリングされたとき、それは単に記入のない情報でフォームを出力します。特別な "form_vars」辞書が提供されている場合、それはそれを生成ようにそれが形に見つけることができるすべての値を埋める。
また、設定された長い、醜いid属性に気づくことがあります。 FormPumpが入力を備えたラベルを関連付けることができるように、これらは、必要とされる。それが行くようにFormPumpはそれらを構成する。あなたは、単にあなたの独自のIDを提供することで、あなたの要素の属性のためにそれらを自分で上書きして自由である。 FormPumpは自動的にテンプレート内のラベルと入力を追跡し、インテリジェントに相互に関連付けるしようとしますが、入力は持っていないだけでIDが指定され、ラベルが指定されているために持っていない。
のフォームに入力する
FormPumpは、指定されたテンプレート変数に入力値をルックアップすることによってフォームを埋める。この変数form_varsデフォルトけど(Jinja2のために、環境にこれを設定:env.values​​_dict_name)を延長のvalues​​_dict_nameプロパティを設定することにより構成することができます。
form_varsは辞書の辞書です。トップレベルのキーがフォームのコンテキスト識別子であり、以下でより詳細に説明する。各フォームコンテキストはFormPumpは、フォームの値をルックアップするために使用するキーと値のペアの簡単なセットです別の辞書を指します。キーが入力された名前を参照してください。値はUnicodeに変換、入力のために* value属性になるされている。
*注:値が予め定められているラジオボタンのような入力の場合、FormPumpがあれば、事前に選択したラジオボタンを判断するform_vars値を使用します。
フォームコンテキストの
FormPumpは、あなたのテンプレートで複数のフォームを持つことができます。各フォームは、入力名に重複していることができる。フォームはFormPumpフォームコンテキストと呼ぶものによって曖昧されている。上記の例は、「例」に設定したフォームのコンテキストを示しています - それはすぐにフォームキーワードに続く文字列です。文字列は、文字列定数ではなく、変数や他の動的表現、(下のカバーこれを回避する方法があります)でなければなりません。
簡単な例では、その使用方法を明確にする必要があります。
&NBSP;>>> TPL = env.from_string( '' '
... {%フォーム ""%}
... {%テキスト "INP"%}
... {%の筒%}
... {%形 "B"%}
... {%テキスト "INP"%}
... {%の筒%}
... '' ')
&NBSP;>>>印刷tpl.render(form_vars = {'A​​':{'INP': 'A'}、 'B':{'INP': 'B'}})
<フォームアクション= ""メソッド= "POST">
&NBSP; <入力タイプ= "テキスト"名前= "INP"値= "" ID = "TCpYQKe8Dsx3jvRLqUCKRtUfsDGmDIxu" />

<フォームアクション= ""メソッド= "POST">
&NBSP; <入力タイプ= "テキスト"名前= "INP"値= "B" ID = "8qXe3PUDgmDPAD3SOdQp6xEq3dYokLyU" />

フォームコンテキストは、実際に二重の目的を果たす。単一ページに複数のHTMLフォームを有する一般的な障害は、それが両方のフォームが同じaction属性を持っている場合に提出されたフォームを判断することが困難な場合がある。フォームコンテキストは、助けることができる。
これまでのように、デフォルトの設定では、それらは出力には直接影響しません。あなたは拡張子にform_name_keyプロパティを設定する場合は、FormPumpは自動的に(Jinja2のために、環境でこれを設定します)、その名のように、フォームのコンテキスト値が含まれている非表示の入力を挿入します。
&NBSP;>>> env.form_name_key = '_'
&NBSP;>>> TPL = env.from_string( '' '
... {%フォーム "例"%}
... {%の筒%}
... '' ')
&NBSP;>>>印刷tpl.render()
<フォームアクション= ""メソッド= "POST">の

提出された値は、簡単にサーバーに送信されたフォームを同定するために用いることができる。
しかし、この機能を使用すると、1以上の合併症が表示されます!私たちは一つの形が単一のページに複数回繰り返すようにしたいと言う。フォームの各繰り返しで、我々は事前に入力された変数を変更したい。たとえば、あなたが会社の人々のリストを持って、あなたが各1の電話番号への更新を編集し、提出することができるようにしたいと言う。フォームに入力するときは、そのためにサーバーに提出された同じフォーム名が、_differentフォームコンテキストを望む。あなたはFormPumpその場でから値を検索し、コンテキストを変更することができform_ctx関数を、入力します。 form_ctx機能は、標準のフォーム機能がない、あなたはあなたのフォームに動的なコンテキスト名を割り当てることができます:
&NBSP;>>> TPL = env.from_string( '' '
...


    ... {人の%で人のため%}
    ...

  • ... {%フォーム "人"%}
    ... {%form_ctx「人。%d」の%の人['ID']%}
    ... {%隠された "ID"%}
    ... {%のラベル "電話"%} {{人['名前']}} {%ENDLABELの%}
    ... {%テキスト "電話"%}
    ... {%の筒%}
    ...

  • ... {%ENDFOR%}
    ...

... '' ')
&NBSP;>>>人= [{'ID':1、 '名前': 'ビルB.'、 '電話': '555-123-4567'}、
... {'ID':2、「名 ':'クリスC. '、'電話 ':' 555-7654-321 '}]
&NBSP;>>>印刷tpl.render(人=人、
... form_vars = dictの([( '人。%D'%人['ID']、人々の中に人のための人)]))

    &NBSP;

  • &NBSP; <フォームアクション= ""メソッド= "POST">の
    &NBSP; <入力タイプ=「隠し」名= "ID"値= "1" ID = "SnX73O3VCSqGdKKfk14UL5W2riTZwuVq" />
    &NBSP; <= "weiOPnfowyRnF2tKTM9dGCVTUjmS7NZM"のラベル>ビルB.
    &NBSP; <入力タイプ= "テキスト"名前= "電話"値= "555-123-4567" ID = "weiOPnfowyRnF2tKTM9dGCVTUjmS7NZM" />
    &NBSP;
    &NBSP;

  • &NBSP;

  • &NBSP; <フォームアクション= ""メソッド= "POST">の
    &NBSP; <入力タイプ=「隠し」名= "ID"値= "2" ID = "TXyn6Vos37ixMPsNBsu8G10n9NlZrnlV" />
    &NBSP; <= "2EKjdwWOY1GdtCVK20dtZYAqBSs4Bo9i"のラベル>クリスC.
    &NBSP; <入力タイプ= "テキスト"名前= "電話"値= "555-7654-321" ID = "2EKjdwWOY1GdtCVK20dtZYAqBSs4Bo9i" />
    &NBSP;
    &NBSP;

あなたは上記の見ると、同じフォーム名を持つが、ダイナミックform_ctxのおかげで満たされた異なる値を両方、2つの形式が表示されます。 form_ctx関数は、後に来るすべての入力に影響します。あなたがしたい場合は、それぞれの1が前を先取り、形で複数のform_ctx年代を指定することができます。彼は文体紛らわしいなる可能性があることに注意してください。
のフォームエラー
フォームのエラーがずっとform_varsように動作します。あなたはインチで対応する値が見つからないすべてのエラーを入れたいのですが、エラーが行くべき場所を示す、その後、いずれかを含む辞書やすべてのエラー·メッセージのネストされた辞書としてform_error指定するには、テンプレートに誤差関数を使用するform_errorルックアップは最終出力から除外されます。
>>> TPL = env.from_string( '' '
... {%フォーム "例"%}
... {%エラー "field_A"%}
... {%テキスト "field_A"%}
... {%エラー "field_B"%}
... {%テキスト "field_B"%}
... {%の筒%}
... '' ')
>>>印刷tpl.render(form_vars = {"例":{"field_A": "ヴァルA"、 "field_B": "ヴァルB"}}、
... form_errors = {"例":{"field_B": "エラーB"}})
<フォームアクション= ""メソッド= "POST">
&NBSP; <入力タイプ= "テキスト"名前= "field_A"値= "ヴァルA" ID = "XkWRXAE0w18j0N6c1mHmtEsSCMPJZWRn" />
&NBSP;


注意は、エラーを見つけるすべての入力は、それらに追加 "エラー" CSSクラスを持っていること。
デフォルトでは、エラーメッセージが上記の - テストのように出力されます。クラス「エラーメッセージ」を持つdivで。 {%の誤差レンダラ= "カスタム"%}:あなたは、そのerror_renderers辞書に機能を割り当てると、テンプレートのレンダラー属性を指定することで、独自のエラー·メッセージ·スタイルを指定することができます。デフォルトでは、すべてのエラーはあなたが上書きして自由である「デフォルト」レンダラを使用

の要件の:ます。

  • のPython

開発者の他のソフトウェア Dave Mankoff

htmlmin
htmlmin

12 May 15

plocal
plocal

11 May 15

へのコメント FormPump

コメントが見つかりません
コメントを追加
画像をオンにする!