問題タブ [webob]
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.
python - 生のHTTPリクエストバイトストリームからwebob.RequestまたはWSGI'environ'dictを構築する方法は?
次のようなバイトストリームがあるとします。
それからWSGIスタイルの「environ」dictを生成する方法はありますか?
うまくいけば、私は簡単な答えを見落としていました、そしてそれは反対の操作と同じくらい簡単に達成できます。検討:
python - PILイメージでPOSTファイルを開く
WSGI、webob、PILを使用Image.open()
して、リクエストから直接ファイルを使用しようとしています。ただし、Image.open()
常に「画像ファイルを識別できません」という例外をスローします。画像は唯一のフィールドであり、他のPOST変数またはGET変数は使用されません。このファイルは、enctype = "multipart/form-data"を使用した標準のHTMLアップロードフォームから取得されます。
私の推測では、アップロードされた画像データを正しくロードしていませんが、それを行う正しい方法がわかりません。
python - パイロン:応答の名前変更?もっと良い方法はありますか?
シリアル化を返すというアクションを持つPylonsコントローラーがありcontent_type=text/csv
ます。入力パターンに基づいてアクションの応答に名前を付けたいと思います。つまり、次のルートの場合、生成されたcsvファイルには{id}.csv
:/app/PROD/serialize
=>という名前を付ける必要がありPROD.csv
ます(ユーザーがExcelでファイルを適切な名前で直接開くことができるようにウェブブラウザ)
運が悪かったので、webobの応答オブジェクトのさまざまなHTTPヘッダーとプロパティを設定しようとしました。ただし、コントローラーに新しいアクションを追加し、元のアクションをその新しいアクションに動的にリダイレクトするだけで、回避策を見つけました。
コントローラのスニペット:
The above setup works perfectly fine, however, is there a better/slicker/neater way of doing it? Ideally I wouldn't like to redirect the request; instead I'd like to either rename location
or set content-disposition: attachment; filename='XXX.csv'
[ unsuccessfully tried both :( ]
Am I missing something obvious here?
Cheers
UPDATE:
Thanks to ebo I've managed to do fix content-disposition
. Should better read W3C specs next time ;)
python - 同じ名前の複数のチェックボックスで pylons (貼り付け) webtest を使用するにはどうすればよいですか?
次のようなフォームがあるとします。
複数の値の送信をテストするために webtest のフォーム ライブラリを使用するにはどうすればよいですか?
python - Google App Engine Python WebApp フレームワークでサポートされている self.error() コード
を呼び出すことで、リクエストにエラーを返せることはわかっていますself.error(http_error_code_here)
。ただし、サポートされていないように見えるエラー コードがいくつかあります。エラーコード510を使用すると「サポートされていないエラーコード」が出てきます。
私が使用しているエラー コードのリファレンスとしてhttp://en.wikipedia.org/wiki/List_of_HTTP_status_codesを使用しました。
現在、GAE Python WebApp フレームワークでサポートされている http エラー コードは何ですか?
python - 英語以外の文字を含む URL にリダイレクトするには?
パイロンを使用していますが、一部の URL に次のような英語以外の文字が含まれています。
ほとんどの場合、問題にはなりませんが、私のログイン モジュールでは、ユーザーがログアウトした後、referer
から を取得してrequest.headers
、その URL にリダイレクトしようとします。
残念ながら、URL に英語以外の文字が含まれていて、IE のブラウザを使用している場合、次のようなエラーが報告されます (Firefox は問題ありません)。
それを修正する方法があります (ただし、良くありません) urllib.quote()
。リダイレクトする前に URL を変換するために使用します。
ブラウザーが IE の場合にのみ機能し、非常に退屈なので、これは良い解決策ではありません。良い解決策はありますか?
python - hudson テストビルドごとに新しい solr インスタンス
hudson を利用した Python サイト用のテスト スイートを作成しています。現在、テスト実行のワークフローは次のようになっています。
- リポジトリから最新バージョンをプルダウンします。
- 新しい mysql db を作成し、スキーマ ファイルといくつかのフィクスチャ データをインポートします。
- 主に webtest を使用してテストを実行します。これは、Web サーバーを実行する必要がないことを意味します。
- mysql データベースを削除します。
このパターンは、Django がテストを処理する方法に似ています。
このパターンを solr で再現したいと思います。リポジトリに schema.xml ファイルのテスト コピーがあり、各テストの開始時に空のインデックスを使用して新しい solr インスタンスを作成し、完了したらそれを削除したいと考えています。schema.xml ファイルは (mysql スキーマと同様に) 変更される可能性があるため、毎回ゼロから再構築する必要があります (適切なテスト衛生に加えて)。
この点に関して、solrのドキュメントはかなり制限されていることがわかりました。問題を簡素化するはずのjettyでsolrを実行しても問題ありませんが、すべての展開で新しいsolrインスタンスまたは少なくとも新しいコアを動的に作成する方法に途方に暮れています。
paste - WMS/WFS サーバー: 自分で作成するのは気が狂っていますか?
私は「自分でやる」タイプの男ですが、噛むことができる以上に噛むことで自分自身をやろうとしないようにしたい.
エンド ユーザーのマシンでスタンドアロン (インターネット接続なし) を実行するオプションが必要なブラウザー ベースのマッピング アプリケーションを作成しています。つまり、アプリケーションは、多くの場合、エンド ユーザーのマシンにインストールされるある種のサーバーであり、ブラウザーはそれにアクセスするために何らかの localhost URL を指します。
クライアント側で MapLayers を使用し、サーバー側には、特定のカスタム方法でマップ上のクリック イベントを処理したり、特定の時間にマップ上にさまざまなカスタム オブジェクトを作成したりするなど、アプリケーションに固有の一連のカスタム ロジックがあります。等々。
サーバーの「ビジネス ロジック」部分については、python で paste/webob を使用して満足しています。これは、このすべてのカスタム ロジックを簡単に配置できる単純なインフラストラクチャです。
私は、クライアントが 2 つのサーバーと通信することを考えていました。この貼り付け/webob ビジネス ロジック サーバーと、WMS および WFS マップ要素を提供するためだけのサーバーです。そこで、マップ パーツを処理するために MapServer と GeoServer を検討していましたが、満足できませんでした。
クライアント マシンに "獣" をインストールして心配する必要がないので、私は満足していません。MapServer については、Apache のような本格的な Web サーバーをインストールしたくありません。また、CGI と PHP と MapScript を処理する必要があります。GeoServer の場合、(潜在的に) Java をインストールし、GeoServer のセットアップと管理のさまざまな複雑さを処理します。
これの一部は、単に学習曲線の問題です。それを避けることができれば、MapServer や GeoServer の複雑さを学ぶことに特に興味はありません。私は GeoServer をインストールし、それを私のデータの一部に向け、GeoServer の優れた Web 管理に組み込まれている MapLayers プレビューを使用して私のデータを表示することができました。しかし、GeoServer を指す自分の MapLayers Web ページを使用して実際にデータを提供しようとすると、GeoServer がクラッシュしました。クライアントからおそらく不正な形式のリクエストを送信するだけでサーバーをクラッシュさせることができるということは、私にとって非常に驚くべきことでした。そして、GeoServer のログを調べて、何が間違っていたのかを突き止めようとすることもできますが、そのために多くの時間を費やしたくありません。
そのため、既に持っているペースト/webob サーバーを使用して、WMS および WFS インターフェイスの一部を自分で実装することを検討しています。実際には、WMS だけが必要なのかもしれません。クライアントにデータを渡すために作成した単純なカスタム プロトコルを介してベクトル オブジェクトを処理し、OpenLayers を使用してオブジェクトを直接作成および操作できるからです。
私は、WMS の仕様とメッセージの例を見てきました (WFS の場合は少し少なくなりました)。特にこの場合、クライアントを完全に制御できるため、このプロトコルを自分で実装することはそれほど難しくないようです。一般的な WMS または WFS サーバーとして機能する必要があるわけではありません。自分の OpenLayers クライアントを満足させるだけです。
WMS サーバーに必要な 2 つの主な機能は次のとおりです。
事前に作成したレンダリング済みタイルのストアからタイルを提供します (レンダリング エンジンとして OpenStreetMap データと mapnik を使用してタイルを事前レンダリングします。通常の Google マップ スタイルのタイル命名スキームを使用してそれらを保存し、アクセスしますOpenLayers が期待するもの)
ローカルに保存した特定のデータがタイルの上に描画される、これらのタイルの変更されたバージョンをサーバーする機能があります。たとえば、ある「レイヤー」に 10000 個のポイントがあり、別のレイヤーに 10000 個のポリゴンがあるとします。ユーザーがこれらのレイヤーをアクティブにすると、同じベース タイルを提供しますが、これらのタイルを提供するときにレンダリングしますそれらの上にこれらの追加機能を追加し、おそらく単純なキャッシング スキームを実装して、これらの過度にレンダリングされたタイルをしばらく保持します。
私の質問は、これらのことを行う既存のツール (MapServer、GeoServer、TileCache など) があることは知っていますが、実際には、単純な WMS メッセージに応答するだけの作業は少ないと感じています。 Python で自分のタイルにこの追加のオーバードローイングを行い、すべてが正しく投影されていることを確認します。これらのオーバーレイヤーには派手な広い通りや何かを描く必要はなく、単純な線、アイコン、およびおそらくラベルだけです。Pythonのみのソリューションを持つことは、確かに素晴らしくシンプルに聞こえます。
WMS/WFS プロトコルのサポートを拡大したり、より複雑なオーバードローを行う必要がある場合は、その時点で MapServer/GeoServer を挿入するだけでよいと思います。
私が考慮していない落とし穴はありますか?
python - WebOb.params(UnicodeMultiDict)で要素を参照した後、要素が最後からポップされます
WebObリクエストのparamsパラメータを参照すると、要素が突然終了します。それまたはそれは単一の要素に縮小されています。参照される要素は、ノックオフされる要素ではありません。
この行のログが表示される前に:
後:
私は途方に暮れています。
python - Pylons を使用していて、response.set_cookie に問題があります
Pylons のバージョンの 1 つが異なっていると考えていますが、実行しているバージョンを簡単に確認する方法が見つかりませんでした。最初の例では、Cookie を設定するために webob を使用して 0.9.7 以上であると確信しています。この環境では、@ 記号を \100 に設定しています。他の環境でわかるように、まったく同じことを行うと、値が適切に設定されます。さらに情報が必要な場合は、お知らせください。
新しいバージョンの Pylons (と思います) の値が正しく設定されていません
テスト環境は通常/期待どおりに動作します