38

フォーム検証ライブラリが欲しい

1. フォーム検証から HTML 生成を分離します。

2.検証エラーは簡単にシリアル化できます。json オブジェクトとしてダンプされます

Python Web プロジェクトでどのフォーム検証ライブラリを選択しますか?

4

5 に答える 5

45

免責事項

一般的に言って、私は現在HTMLフォームライブラリについて少し警戒しています。メガフレームワークから何かを使用する場合は、常にメガフレームワーク全体を依存関係として取り込む必要があります。

多くのメガフレームワークの多くのサブコンポーネントは、フレームワークに依存しないと主張していますが、私たち自身をからかってはいけません。使用しない場合は、機能にさまざまな違いがあることを私が知っているフォームライブラリが少なくとも12個あります。選択だけでもかなり混乱する可能性があります。一般的に言って、Ian Bicking何年も前に言っていて、今でも真実であるように、誰にでも合う1つのフォームライブラリの概念は非常にばかげていると思います。実際、本当に必要だと判断する前に、おそらくよく考え直す必要があると思います。ほとんどの場合、FormEncodeのようなフォーム検証ライブラリが必要です。それは本当にあなたがそれをどのように使いたいかによります。

私の場合、メガフレームワークを使用しないので、軽量で、ピックアップと構成が簡単で、HTML / JS/CSSの通常の使用法の邪魔にならないものを選択します。 。

免責事項を終了

ToscaWidgetsToscaWidgets 2FormishDeformWTForms 、FormEncodeを試しました。私はそれらのどれも完璧に近いところはないと言わなければなりません。これが私の経験です:

  • ToscaWidgets、ToscaWidgets 2-非常に強力ですが、非常に複雑でもあります。ToscaWidgets 2の方がはるかに優れていますが、それでもかなりアルファ版のATMです。セットアップにはかなりの忍者スキルが必要であり、デフォルトのテンプレートをカスタマイズする必要があるときはいつでも、コードがかなり急速に肥大化する傾向があります。
  • Formish / Deform-TWとほぼ同じくらい強力ですが、Formishは現在休止しています。また、マコとの緊密な関係もあるので、マコを使わないのなら、おそらくあなたには向いていません。DeformはFormishを書き直したものですが、Zopeの依存関係が大量に発生します。カメレオンは、ZPT以外の他のテンプレート言語をサポートするという点でもまだ十分ではありません。これらの2つのライブラリも、セットアップが特に簡単ではありません。
  • WTForm-非常にシンプルで、邪魔にならず、開発の面で非常にアクティブです。上記のライブラリほど強力ではありませんが、通常、発生する可能性のある80%のユースケースを処理するため、十分に機能します。
  • FormEncode-2005年以来、試行錯誤されています。十分にテストされており、ビルド済みのバリデーターが最も多く、条件付き検証をサポートし、数十の言語で役立つエラーメッセージが表示されます。また、値とエラーメッセージが事前に入力されたHTMLでフォームコードを生成するための非常にシンプルでありながら焦点を絞った機能も備えています。その欠点には、直感的でないAPIと、完全にスパゲッティのような内部コードが含まれます。ただし、このライブラリは非常に信頼性が高く、すべてのデータ検証のユースケースに非常によく適合します。これは私がいつも戻ってくるものです。

2012年の終わりの時点で、Python検証ライブラリをGoogleとPyPIですばやく検索すると、何百ものパッケージが返されます。活発に開発されているDjango拡張機能を除いて、注目に値するものが12個強あります。JSON-Schemaを使用してスキーマを定義し、 Pythonデータ構造を一般的に検証できるようにする傾向があるようです。これは、サーバーアプリケーション開発者が複数のチャネル(RESTful APIおよびHTMLフォーム)からユーザーデータを受け入れるようになったことを反映している可能性がありますが、1つの検証ライブラリのみを使用したいと考えています。

Python 3.3のリリースにより、Python 3.xをサポートするために既存のライブラリを移植するという大規模な動きが引き起こされる可能性があります(その裏側では、古いライブラリが停滞し、Python 2.xとのみ互換性があります)。 Python 3.xをすでにサポートしている、またはサポートするために積極的に機能しているものを選択してください。

最後に、フォーム検証ライブラリを選択する際のもう1つの大きな懸念事項は、有用なエラーメッセージを報告する機能です。これには、長期的にはエラーメッセージをローカライズする必要が常に含まれます。独自のエラーメッセージを簡単に提供できることで、ライブラリを他のWebアプリケーションアーキテクチャと統合することの複雑さがすぐにわかります。

有望な新進気鋭:

于 2011-05-11T06:55:51.583 に答える
13

私はおそらくWTFormsを選ぶでしょう。

于 2010-07-10T14:26:13.460 に答える
4

このトピックは少し古いものですが、まさにこの目的のために書いてきたライブラリを恥ずかしがらずに差し込むと思いました。これは HTML フォーム専用ではありませんが、少なくとも部分的には HTML フォームを念頭に置いて作成されています。

名前を付けたときはあまり創造的ではなかったので、「Validator」は今のところそうする必要があります。どうぞ: https://github.com/wilhelm-murdoch/Validator

于 2012-04-03T09:11:33.537 に答える
1

それは、使用するフレームワークの種類によって異なります。

あなたのタスクには、使いやすく、まだ「強力」な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で質問するのが最善です。彼らはとても親切で、あなたをとても速く助けてくれます。

それが役に立てば幸い!よろしくお願いします..

于 2010-07-07T12:23:13.210 に答える
0

使用する基礎となるフレームワークによって異なります。

django の場合、組み込みのフォーム フレームワークが最適です。

一方、kay は zine のフォーム システムの拡張バージョンを使用しています。

そして、tipfy は WTForms を使用します。

これまでのところ、django の組み込みシステムが最高です。

ボンネットの下で使用するフレームワークは何ですか?

于 2010-07-10T14:31:34.697 に答える