問題タブ [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 - webapp2のユーザーモデルでユーザー名を取得するにはどうすればよいですか?
私はwebapp2でユーザーの認証とログイン/ログアウトに成功し、ユーザーがログインしているかどうかを知るためのデコレータがあり、これが機能します。
ここで、ユーザー名として基本的なものを追加したいと思います。これはExpandoモデルであるため、webapp2_extrasで提供されるUserモデルをサブクラス化する必要がないのではないかと思います。ユーザー名を追加する方法、またはユーザーをユーザー名で更新する方法を教えてください。試していませんが、auth_idを表示できると思いますが、ユーザー名と同じではありませんか?
ありがとう
アップデート
Userモデルはexpandoモデルであるため、たとえばユーザーを作成するときに、次のように「プロパティを追加するだけ」のようです。
上記のコードを徹底的にテストしていませんが、webapp2では、機能を取得するためにUserクラスをサブクラス化する必要はないようです。
解決策/回避策
python - webapp2 で User オブジェクトの expando プロパティを使用するには?
User オブジェクトのプロパティを拡張するために使用しようとしています:
しかし、次のエラー メッセージが表示されます。
タプルの代わりに User オブジェクトに対してこれを行うにはどうすればよいですか?
ありがとう
google-app-engine - webapp2 のグローバル変数としてリクエストにアクセスする
appengine アプリケーションを Pylons から webapp2 に移行しています。pylon では、リクエスト オブジェクトとレスポンス オブジェクトはグローバルです。ただし、webapp2 では、オブジェクト属性 (self.request、self.response) としてアクセスされます。
しかし、extras パッケージで Local モジュールを使用することは、スレッドセーフな方法でグローバル変数にアクセスするためのものだと思います。
既存のコントローラー コードが保持されるため、webapp2 アプリで self.request の代わりにグローバル変数として request オブジェクトにアクセスする方法を理解できません。
ローカル モジュールとその使用方法に関する多くのドキュメントを見つけることができませんでした。Flask や Bottle などの他のフレームワークにも、contextLocal を使用してリクエストへのグローバル アクセスがあります。そのため、webapp2 でも同じように request オブジェクトにアクセスするコードは移植性が高くなります。
python - Google アプリ エンジンで settings.py をセットアップする方法
GAE/Py2.5 から 2.7 に、Django0.9 から Django1.2 に変更しました。TemplateDoesNotExist エラーが発生して無効になった場合、テンプレート エンジンにタグを拡張する相対パスを使用しています。
テンプレート「google.appengine.ext.webapp.template」を使用しています。独自のローダーを TEMPLATE_LOADERS に設定するか、テンプレート パス TEMPLATE_DIRS を設定するにはどうすればよいと思いますか。
ただし、設定方法がわかりません。設定方法を教えてください。
python - webapp2でauth_idを追加する方法は?
webapp2のauthモジュールを使用していますが、「facebook:fbuserid12121212」のようなauth_idを追加して、ユーザーのauth_id:sのリストに追加する方法を知りたいです。しかし、これを可能にするAPIの関数は見当たりません。やり方を教えてください。
ありがとう
python - python / webapp2:Webフォームベースの計算機のいたるところにDRYに違反しています...どうすれば修正できますか?
ここに、パラメーターと入力を受け取り、連立一次方程式を解くWebフォームベースのマクロ経済モデルがあります。
webapp2ハンドラー:
ソルバー:
私はこのコードが嫌なことを知っています、私は各パラメータに対して以下を行うために必要なDRYを排除する方法がわかりません:
- httpGET送信からパラメーター値を取得します。
- テンプレート値ディクショナリに送信します。
- 値がある場合は、それをfloatに変換して、numpyがそれをどう処理するかを認識できるようにします。
- ソルバー関数のスコープ内のパラメーターを取得します。
ありがとう。
google-app-engine - expando モデル間の参照を作成する方法は?
アップデート
これは、次のスキームを作成するための私の最善の努力でした
元の質問
どのユーザーがどのユーザーの「スポンサー」であるかを示すために、expando クラスで自己参照を作成するにはどうすればよいですか? 「スポンサー」は新しいユーザーを招待した人であるため、作成時にそれを保存する必要があり、文字列または文字列リストよりも参照プロパティとして保存する方がはるかにきれいです。
新しいユーザーを作成できますが、参照を作成する方法がわからないため、あるユーザーの別のユーザーが最初のユーザーのスポンサーであることがわかります。これをモデル化する方法は、両方のオブジェクトはユーザーですが、複雑なのはそれがexpandoモデルであるため、参照プロパティの使用方法がわかりません。その方法を教えていただけますか、またはこの問題を最善の方法で解決する方法の手がかりを教えていただけますか?
epando モデルで実際の参照プロパティを保存する最後の部分を行う方法がわかりません。どうすればそれができますか?
アップデート
できないようです:
NotImplementedError: Property sponsor does not support <class 'google.appengine.ext.db.ReferenceProperty'> types.
コード:
参照の代わりに文字列を使用することを余儀なくされ、解決策が実行可能になります。
google-app-engine - ルーティングの改善にご協力ください
私のルーティングは私に向かって機能しますが、フレームワークが webapp2 に更新されて以来、長い間構築されているため、ルーティングを混在させ、どの方法が最適かわかりません。ルーティングをどのように行うべきかを改善するのを手伝ってもらえますか? フレームワークでルーティングにハンドラーのデフォルト値を設定させるか、代わりにルーティングをハンドラーのすぐ上に設定する方が良いですか?
そのため、新しい URI を追加するときは、app.yaml、ルーティング、ハンドラー クラス、およびテンプレートの両方を追加する必要があります。これは、WSGI からの応答を取得するためだけに追加する場所が多すぎるため、理想的ではありません。したがって、たとえば RequestHandler クラスを追加する場合は、既に一意の名前があるため、デフォルトのルーティングが必要な場合など、より多くのデフォルト値で機能するようにコードを修正したいと思います。フレームワークはそれを行うことができますか?
回答またはコメントをありがとう
google-app-engine - 一致するキーのクエリを作成するにはどうすればよいですか?
私は別のユーザーであるスポンサーのキーを使用して、ユーザーのスポンサーが誰であるかを示します。これにより、スポンサーを持つユーザーのデータストアにリンクが作成されます。これは最大で1つですが、スポンサーは次のような多くのユーザーをスポンサーできます。この場合、他の3人のユーザーを後援したID2002:
この場合、このクエリは私が望むことを実行します:SELECT * FROM User where sponsor =KEY('agtzfmJuYW5vLXd3d3ILCxIEVXNlchjSDww')
しかし、Pythonでそれをプログラムする方法がわからないので、データストアに対してのみ使用できます。同じフィールドのキーと同じユーザーを持つユーザーのセットを照合する場合、キーでクエリするにはどうすればよいですか?私のモデルのユーザーは最大で1人のスポンサーを持つことができ、特定の人が誰をスポンサーしているかを知りたいだけです。これはユーザーのリストであり、次に彼らが順番にユーザーをスポンサーしていて、それについても質問したいと思います。
フィールドスポンサーはキーであり、データストア内のスポンサーへのリンクがあります。user2.sponsor = user1.keyのようにキーを設定しました。次に、次のようなクエリでスポンサーされているuser1をすべて検索します。
User.All().filter('sponsor = ', user1.key)
しかし、スポンサーはタイプキーのフィールドであるため、たとえば、アクティブユーザーがスポンサーである人々のリストを確認するためにそれを照合する方法や、第2世代にもリンクがある場合にツリーになる方法がわかりません。このユーザーがスポンサーであり、次に第2世代であるユーザーのリストを選択するにはどうすればよいですか?関係を単純にu1=u2.key、つまりuser2.sponsor=user1.keyのようにモデル化したとき。ヒントをありがとう
次の回避策は悪い習慣ですが、私の最後で唯一の手段です。
アップデート
問題は、キープロパティが不要であり、コードのバグだと思うときに、GuidoVanRossumがこれをndbのバグとして報告していることです。これが私が現在使用しているものです。これは、プログラマー、テスター、管理者を除く組織内のすべての実際のユーザーがユーザーIDであるスポンサーIDを持っている必要があるため、非常に受け入れられるソリューションです。
google-app-engine - UnicodeDecodeError を解決するには?
データストアから非 ASCII を読み取ろうとすると、奇妙なエラー メッセージが表示されます。
以前は機能していたループは普通です:
このエラーを解決するにはどうすればよいですか?
私のハンドラーは次のようになります
私のモデル定義は webapp2 の User モデルです。これも私のカスタム ファイラーの makeid です。
アップデート
回避策は奇妙です。.decode('utf-8')
実行する必要のないものを作成するだけです:
ユーザー オブジェクトのすべての変数を 1 つずつではなく一度にデコードする方法はありますか?