フォーム検証ライブラリが欲しい
1.フォーム検証からHTML生成を分離します。
2.検証エラーは簡単にシリアル化できます。 jsonオブジェクトとしてダンプ
python Webプロジェクトでどのフォーム検証ライブラリを選択しますか?
免責事項
一般的に言って、私は現在、HTMLフォームライブラリについて少し警戒しています。メガフレームワークの何かを使用する場合は、必ずメガフレームワーク全体を依存関係として取り込む必要があります。
多くのメガフレームワークの多くのサブコンポーネントは、フレームワークに依存しないと主張していますが、自分自身をひっくり返さないようにしましょう。使用しない場合、少なくとも12のフォームライブラリがあり、さまざまな機能の違いがあります。選択だけではかなり混乱する可能性があります。一般的に言って、Ian Bicking says は何年も前に、まだ真実であるので、私は誰にでも合う1つのフォームライブラリという概念はかなり馬鹿げていると思います。実際、本当に1つ必要だと決める前に、おそらく2度考える必要があると私は主張します。ほとんどの場合、 FormEncode のようなフォーム検証ライブラリが必要な場合がほとんどです。それは本当にあなたがそれをどのように使いたいかに依存します。
私にとっては、メガフレームワークを使用しないので、軽量でピックアップと構成が簡単なもの、およびHTML/JS/CSSの通常の使用を妨げないものを選択します。
END免責事項
私は試しました ToscaWidgets 、 ToscaWidgets 2 、 Formish 、 Deform 、 WTForms およびFormEncode。私はそれらのどれも完璧に近いどこにもないと言う必要があります。彼らとの私の経験はここにあります:
2012年末の時点で、Python検証ライブラリーのGoogleおよびPyPIのクイック検索では、何百ものパッケージが返されます。アクティブな開発中のDjango拡張を割引して、1ダース以上の注目すべきものがあります。 JSON-Schema を使用してスキーマを定義し、Pythonデータ構造を一般的に検証できる傾向があるようです。これは、サーバーアプリケーション開発者が複数のチャネル(RESTful APIおよびHTMLフォーム)からユーザーデータを受け入れる動きを反映している可能性がありますが、検証ライブラリを1つだけ使用したいと考えています。
Pythonのリリースを考えると、3.3はspark 3.xをサポートするために既存のライブラリを移植する大規模な動きになる可能性がありますPython 3.x(その反対側は古いライブラリが停滞し、Python 2.x)とのみ互換性がある場合、Python 3.xをすでにサポートしているか、サポートを積極的に行っているライブラリを選択することをお勧めします。
最後に、フォーム検証ライブラリを選択する際のもう1つの大きな関心事は、有用なエラーメッセージを報告する機能です。これには、長期的に見ればエラーメッセージのローカライズの必要性が必ず含まれます。独自のエラーメッセージを簡単に提供できると、ライブラリを他のWebアプリケーションアーキテクチャと統合する複雑さがすぐにわかります。
有望な新進気鋭:
私はおそらく WTForms を選択します。
このトピックは少し古いですが、私はこの目的のために書いてきたライブラリを恥知らずにプラグインすると思いました。これはHTMLフォームに限定されたものではありませんが、少なくとも部分的にはHTMLフォームで作成されました。
名前を付けたとき、私はあまりクリエイティブな気分ではなかったので、「バリデーター」は今のところ必要があります。ここに行きます: https://github.com/wilhelm-murdoch/Validator
それは、よりどのようなフレームワークを使用するかによって異なります。
あなたの仕事には、使いやすく、まだ「強力」である web2py-Framework を使用することをお勧めします。 デフォルトではフォームの検証 ( web2py-book は無料です)があり、まさにあなたが望むことを行います:検証からhtmlの生成を分離し、これを自動的に行います、ただし、必要に応じてカスタマイズできます。
例:
def display_form():
form=FORM('Your name:',
INPUT(_name='name', requires=IS_NOT_EMPTY()),
INPUT(_type='submit'))
if form.accepts(request.vars, session):
response.flash = 'form accepted'
Elif form.errors:
response.flash = 'form has errors'
else:
response.flash = 'please fill the form'
return dict(form=form)
エラーをシリアル化することも可能ですが、それらの質問については、 web2py-group で質問するのが最善です。彼らはとても素敵で、あなたをとても早く助けてくれます。
それが役に立てば幸い!宜しくお願いします..
それは、使用している基本的なフレームワークに依存します。
Djangoの場合、組み込みのフォームフレームワークが最適です。
ケイはZineのフォームシステムの拡張バージョンを使用しています
そしてtipfyはWTFormsを使用します。
これまでのところ、Djangoの組み込みシステムが最適です。
内部ではどのフレームワークを使用していますか?