問題タブ [webapp2]
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 - App Engine ハンドラで Firefox 12.0 から複数の HTTP リクエストを受信する
Firefox 12.0 と GAE の Python ハンドラーで奇妙な動作が発生しています。
Firefox でこのハンドラーを要求すると、3 回実行されますが、GIF を返す場合のみです。
現在、ハンドラーのクエリ文字列に基づいて memcache エントリを設定することでハッキングしています。これにより、同じ情報の重複した db.put() が防止されることを願っています。
有効な URL は次のとおりです: http://test-o-tron.appspot.com -- これらのクエリ文字列パラメーターは変更できることに注意してください。
- 形式 (「gif」または「html」)
- ハック (「真」または「偽」)
- mkey_suffix (カウンターを簡単にリセットするために memcache キーで使用される文字列)
コードは次のとおりです。
google-app-engine - Google App Engine:Webapp2のキャッシュプロパティからユーザーオブジェクトを取得(current_user)
私が達成しようとしているのは、webapp2.cachedプロパティからユーザーオブジェクトを取得することです。現在のユーザーを取得するメソッドがリクエストハンドラーに定義されています。
次のようなモデルの1つのUserProperty()であるため、ユーザーオブジェクトを取得したいと思います。
これで、アップロードフォームが投稿されると、データストアに「なし」と表示される「ユーザー」を除いて、すべてが正常に機能します。
インタラクティブコンソールで遊んでいるときに見つけた考えられる理由は、メソッドcurrent_userが実際のユーザーオブジェクトではなく、Webキャッシュされたプロパティを渡すことでした。
例えば:
今私の質問は、ユーザーオブジェクトを取得するための最良の方法は何でしょうか?よろしくお願いします。
エイミス
PS:編集:
以下は、画像をデータストアに保存しようとしているコードです。
PS:
追加するだけで、「users.get_current_user()」メソッドを使用してみましたが、これも「None」を返します。
google-app-engine - webapp2、GAE での self.request.path 変更の問題
私のGAEアプリではwebapp2.RequestHandler.initialize
、リクエストに対してカスタムを行うために使用します。
数日前までの変更os.environ['PATH_INFO']
は、RequestHandler での self.request.path の呼び出しに影響を与え、変更されたリクエスト パスを反映していました。(そして、これは SDK でも問題なく動作します)
今はもう機能しません。もちろん、それが原因で大きな問題を抱えています。これが特殊なケースである可能性があることは理解していますが、これが変更された理由は何ですか?
影響を受けるコード:
python - Python + Jinja2 + GAE を使用して「get」リクエストで値を渡すときの CSS レンダリングの問題
Stack Overflow に投稿するのはこれが初めてです。Python、Jinja2、Google App Engine を使用して、比較的単純なゲームを構築しようとしています。現時点では、ゲームを作成、編集、一覧表示、および破棄するための単純な CRUD 関数をいくつか作成しました。そして、ほとんどの場合、それは機能しているようです。しかし、特定のゲームを取得するために値を渡すたびに、CSS スタイルシートが適用されていないようです。ただし、値を渡さなければ問題なく動作するようです。たとえば、「create_game」や「all_games」などのパラメーターを使用しない関数を呼び出すと、それぞれのテンプレートが関連する CSS スタイルで正しくレンダリングされます。しかし、「edit_game/12345567」のような関数を呼び出すと、CSS スタイルシートがまったく適用されず、
問題がどこにあるのかよくわかりません。これは、テンプレートがレンダリングされる方法と関係がありますか? それとも、ある種のルーティング/マッピングの問題ですか?
ここに私のmain.pyがあります:
そして私のbaseController.py:
以下は、gameController.py の 2 つのクラスです。「AllGames」は正しい CSS スタイルを含むすべてを正しくレンダリングしているように見えますが、「PlayerGames」は正しい python 生成コンテンツと html をレンダリングしているように見えますが、CSS を使用していないようです。CSS スタイルが適用されている場所であるため、CSS は「base.html」とともに継承されるだけだと思います。しかし、どういうわけか、これは起こっていません。
base.html は次のとおりです。
これは all_games.html で、正しくレンダリングされているように見えます:
これは、all_games.html とほとんど同じです。ただし、これは CSS なしでレンダリングされているように見えますが、html とコンテンツは明らかに適切に表示されています。
一部のページで正しくレンダリングされているため、これはおそらく問題ではありません。
これが問題に本当に関連しているとは思えませんが、authController.py もあります。
コードの一部は、この単純なメモ作成アプリの例に基づいています: https://github.com/fRuiApps/cpfthw/tree/master/webapp2 は、素晴らしく明確な MVC 構造を持っていることがわかったからです。明らかに、私のコードはかなり拡張されていますが、テンプレートのレンダリング方法に関するコードの一部は、多かれ少なかれ例に基づいています。ただし、この例では、私が抱えていると思われる CSS スタイルの消失の問題は発生していません。つまり、特定のメモを編集するリクエストを渡すと、例は CSS を正しくレンダリングするように見えます。
私はこの問題を数時間解決しようとしてきましたが、あらゆる努力にもかかわらず、どこにも行き着いていないようです. 私は通常、StackOverflow で本当に役立つ情報を見つけることができるので、これが問題を投稿するのに最適な場所であると考えました。どんな助けでも大歓迎です!ありがとう!
python - 新しいアプリインスタンスの高速起動を確実にするためにwebapp2にモデルとハンドラーをインポートする方法
Google App Engineのwebapp2アプリをできるだけ早く起動(新しいアプリインスタンスを作成)したい。私はどのような明らかな減速に注意する必要があるのか疑問に思っていました(私は知っています..時期尚早の最適化ですが、私がそれを助けることができれば、最後に大規模なリファクタリングをしたくありません)
私はこれに似たフォルダ階層を持っています:
main.pyで、ルーターを使用してアプリインスタンスを作成します(ルーターはroutes.pyからインポートされます)。ルート.pyはすべてのハンドラーをインポートします(各ルートにハンドラーを割り当てます)。すべてのハンドラーは、ほぼすべてのデータモデルをインポートします。これは、私のアプリが新しいアプリインスタンスを作成するのに非常に時間がかかることを意味しますか?
プロジェクトの終わりまでに、約100個のハンドラーと30個のデータモデルがあると予想していますが、それらの多くはめったに使用されません。
データモデルをインポートするには(some_handlers.py内から)
次のだけで十分に高速になります。
from root_folder.data_model_folder.more_ndb_models import special_model
構成/レジストリの使用を検討する必要がありますか?
google-app-engine - 関数ではなく requesthandler クラス メソッドで webapp2 404 エラーを処理する
Google App Engine (Python) で webapp2 フレームワークを使用しています。webapp2の例外処理: WSGI アプリの例外では、関数で 404 エラーを処理する方法が説明されています。
そのクラスのメソッドで、webapp2.RequestHandler
クラスの 404 エラーを処理するにはどうすればよいですか?.get()
編集:
a を呼び出す理由RequestHandler
は、セッション ( request.session
) にアクセスするためです。そうしないと、現在のユーザーを 404 エラー ページのテンプレートに渡すことができません。つまり、StackOverflow 404 エラー ページでユーザー名を確認できます。Web サイトの 404 エラー ページにも現在のユーザーのユーザー名を表示したいと考えています。これは関数で可能ですか、それともでなければなりませRequestHandler
んか?
@proppy の回答に基づいてコードを修正します。
python - PythonのRequest.hostオブジェクトのタイプ?
私は現在、自分の GAE アプリケーション用に少し個人的な種類のユニバーサル URI パーサーを完成させています。
全体的には、すべて問題なく、非常にスムーズに実行されますが、コードを確認したところ、情報の解析に使用する self.request.host オブジェクトが配列なのか文字列なのか疑問に思っています。
一部の人にとっては明らかなように思えるかもしれませんが、オブジェクトのタイプに関する関連情報を見つけることなく、Googleのサイト、pythonのサイト、およびDjangoのサイトでもドキュメントを検索しました(または、検索が悪いかもしれません)。
したがって、オブジェクトのタイプを含むドキュメントがどこかにあるかどうかを誰かが教えてくれれば(例のphpドキュメントについては;-))私は本当に幸せです;-)
isinstance を使用して取得できるようになりましたが、使用しようとしている他の多くのオブジェクトで同じことを行う必要があるため、Python 自身からのドキュメントを好むでしょう。
よろしくお願いします。
python - webapp2 と App Engine での SHA 512 パスワード?
Google App Engine で webapp2 を使用している場合、「create_user」メソッドでユーザーを作成する方法が 1 つしかないことがわかります [auth/models.py line:364]
しかし、SHA 512を使用できない「security.generate_password_hash」メソッドへのそのメソッド呼び出し
Q1: webapp2 と App Engine Python で SHA 512 パスワードを作成する最良の方法を教えてください。
Q2: webapp2 が提供する暗号化 (SHA1) の代わりに SHA 512 を使用することをお勧めしますか? それともそれで十分ですか?
python - WSGI を使用してユーザーを http から https に再ルーティングする方法
元の質問
App Engine SDK 1.6.5
Python 2.7
webapp2
ページをhttpsに保護するためにwebapp2スキームを実装しました。問題は、ユーザーが https:// site/login の代わりに http:// site/login と言うと、スキームがルートを認識しないために 404 エラーが発生することです。
例 main.py
http リクエストをキャッチするために、https ルートの下に別のルート / コントローラーを追加しました。
webapp2.Route(r'/login', RouteLogin)
RouteLogin.py
これは機能しますが、これを行うためのより良い方法があるはずです。Apache Web サーバーで htaccess を使用する場合と同様です。これは私の好みではあまりにもハックに似ています。コードに URL をハード コードするのはあまり好きではありません。ログインに大したことではないのは 2 つの要求であることは言うまでもありませんが、コストがかかりすぎる他の例がある可能性があります。
注 1: このソリューションを検討している場合は、HTTPS スキームを使用すると、SCHEME を削除するか、dev に設定した変数を構成しない限り、開発コンソールを使用できないことにも注意してください。
注 2: HTTP の代わりに HTTPS を提供するプログラム的な方法を得ることができました。以下のコメントで正しい軌道に乗っていましたが、引数が必要です。
webapp2.uri_for('login', _scheme='https')
これにより、正しいhttps://someapp.appspot.com/login URL が得られます。残念ながら、上記のハックを使用しない限り、httpsなしでアドレスバーにURLを入力してエラーを受け取る人を処理する方法という私の主な問題を処理しません. だから私はまだ所得要求をHTPPSにルーティングするWSGIの方法を探しています。
編集: 注 1 を追加し、タイトルを明確にしました。CGI ではなく、ソースから WSGI を使用していることは明らかだと思いました。
python - PickleProperty を使用して辞書を GAE に保存する
pickle プロパティを介して GAE Gql Datastore に保存しようとしている Python 辞書があります。
私はこの質問と回答に従おうとし ました.GAEに辞書のリストを保存します
しかし、以下のコードでは機能しません..リストに問題があるというエラーが表示されます
次のように、ピクル プロパティとデータ モデル クラスをセットアップします。
私のコードには、データを挿入して読み取る関数があります。
私の get 関数では、次のように m_time_manage() ftn を呼び出します。
pickle.loads と end of file エラーに何かがあるというこのエラーが表示されます...完全なエラーは次のとおりですが、Python に辞書を保存する方法が他にわかりません。
事前に助けてくれてありがとう