問題タブ [webargs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3460 参照

python - URL エンコードされたパラメーターを使用してリクエストを処理する Flask の問題

私は奇妙な問題を抱えています。Flask を実行しており、メンバーシップをキャンセルするための API 関数があります。URL には、キャンセルの理由を設定するパラメーターも含まれています。これは短いテキストであり、拡張文字を含めることができるため、文字列は発信側によって URL エンコードされます。

ただし、場合によっては、自分の処理コードに到達する前に、Flask が 400 エラーを返します。たとえば、次の URL です。

400 エラーが表示されます:ブラウザ (またはプロキシ) が、このサーバーが理解できない要求を送信しました。完全に有効な URL のように見えますが。エラーをトラップすると、基になるエラー データは次のようになります。

エンコードされた拡張文字á (%C3%A1) を URL 文字列から削除すると、すべて問題ないことがわかりました。

他の場所で見つけたこの回避策をアプリに追加することで解決することもできます。初期化()

このステートメントにより、Python インタープリターはデフォルトで ASCII ではなく UTF-8 を使用してバイト文字列をデコードするように強制されることがわかりました。
これで問題の解決策が得られますが、複雑すぎて不必要だと感じます。

ですから、本当の問題は、ここで何が欠けているのでしょうか? これを解決することについて私が知らないFlask内に設定がありますか、それともFlaskが特定のURLエンコードされた文字列を処理できないということは本当にありますか? ライブラリ以外のコードで回避策を講じなくても、Flask が URL エンコードされたパラメータを単独で処理できることを期待しています...

Flask はそれをトラップして HTTP エラーとして処理し、400 HTTP ステータス コードを返すため、トレースバックはありません。

編集: 例外の発生源は、Flask コードのこの部分にあります (site-packages\flask\app.py):

コードは except: にスキップし、400 エラーを返します。

あなたが私に与えることができる指針をありがとう。

0 投票する
1 に答える
1028 参照

python - SQLalchemy の PhoneNumberType を null として保存することは可能ですか?

webargs と python を使用して API を作成しています。ユーザーが電話番号または電子メール アドレスを入力する必要があるという条件があります。ユーザーが電子メール アドレスのみを提供した場合、sqlalchemy が PhoneNumberType をインスタンス化しようとすると、予想されるエラーが発生します。

sqlalchemy_utils.types.phone_number.PhoneNumberParseException: (1) (1) 提供された電話番号は None でした。

私の質問は、このデータベース フィールドに null の電話番号を受け入れさせ、そのエントリを null のままにしておくにはどうすればよいですか?

これが私のユーザーモデルの一部です:

他の理由で国コードが必要ですが、言う方法はありますか... _Phone null ??

0 投票する
1 に答える
58 参照

python - Datashader ダッシュボードの追加の Figure にコールバック フラグを追加する

代替集計に基づいて、データシェーダー ダッシュボードの例に追加の数値を追加しようとしています。たとえば、地理的なNYC_Taxi緯度、経度PU、およびDO集計とともに、同じダッシュボード内に移動距離/先端の数値を含む 2 番目のパネルを含めたいと考えています。

レイアウトに 2 番目の図を設定し、最初の画像からデータシェーダー レイヤーをミラー化できます。 ミラーリングされた 2 つのイメージを持つダッシュボード

私は本当にフラグが必要だと思います

各画像のサービス URL に名前フィールドが追加されています。

フィールドはname、適切な集計を作成するためのフラグです。URL 要求に適切なフィールドが含まれていることはservice_url理解できましたが、図に名前または特定のタグを付けてパスをクラスに戻す方法がわかりませんGetDataset()self.models.specific_figure.featurelist集計作成の仮説 。

0 投票する
1 に答える
1256 参照

python - Python Flask Flasgger (Swagger) webargs - HTTP PUT 本文の文字列のリスト

フラスコ、flasgger (yml ファイルで定義された Swagger)、および webargs を使用して Python Web API を作成しました。


put_community_sets.yml:


テストとして、フラスコアプリを実行し、HTTP PUT- を送信します。

ヘッダー = コンテンツ タイプ、アプリケーション/json

本体 = [「テスト 1」、「テスト 2」、「テスト 3」]

取得: 422 Unprocessable Entity 要求は適切な形式でしたが、セマンティック エラーのため従うことができませんでした。

yml ファイルの swagger 定義、@use_kwargs パラメーター、またはテスト PUT に何か問題があると思います。

0 投票する
1 に答える
2654 参照

python - Webargs Flaskparser を使用して URL パスの変数パラメーターとクエリ パラメーターを検証する

API に送信されるすべてのデータを検証しようとしています。私の URL 構造には、/api/v2/users/<string:username>/collections/実際のクエリ文字列パラメーターだけでなく、その中に変数が含まれており、これらはすべて検証を通過する必要があります。

完全な URL は次のようになります。 https://127.0.0.1:5000/api/v2/users/<string:username>/collections/?page=5&per_page=10

検証する必要がある 2 つの変数はusername page、 、およびper_pageです。簡単な解決策は URL 構造を変更することですが、リソース クラス内に追加の検証を追加せずに、必要なことを達成し、現在の単純さを維持できるかどうか疑問に思っています。可能であれば、どのようにしますか?

usernameコードを実行すると、引数に存在しないため、検証エラーが発生します。