問題タブ [pyramid]
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 - SQLAlchemy - テーブルのリストを取得する
ドキュメントでこれに関する情報を見つけることができませんでしたが、SQLAlchemy で作成されたテーブルのリストを取得するにはどうすればよいですか?
クラス メソッドを使用してテーブルを作成しました。
python - Pyramid では、トラバーサルを使用して、どのように動的 URL を作成しますか?
私は Pyramid を初めて使用し、アプリケーションを作成しました。カテゴリのテーブルを含むデータベースがあります。カテゴリは属性 Red と Green を持つ色で、別のカテゴリは属性 4 と 5 を持つサイズかもしれません。domain.com/{category} のようなリンクを作成できるようにしたいと考えています。では、2 つのカテゴリ テンプレートがあるとします。1 つは color.mak で、もう 1 つは size.mak です。domain.com/Red または domain.com/Green が color.mak をレンダリングし、domain.com/4 または domain.com/5 が size.mak をレンダリングするようにするにはどうすればよいですか? URL ディスパッチとトラバーサルの違いを読んだ後、トラバーサルはどちらの方法でも実行できますが、私が望むものには優先されるようです。私が本当にこだわっているのは、これらのカテゴリをリソース ツリーに追加する方法です。
python - Pyramid アプリの起動時に Registry().settings を取得するには?
私は、Django と gunicorn で Web アプリケーションを開発するのに慣れています。
Django の場合、Django アプリケーション内のすべてのアプリケーション モジュールは、django.conf.settingsを介してデプロイメント設定を取得できます。「settings.py」は Python で記述されているため、任意の設定と前処理を動的に定義できます。
gunicorn の場合、優先順に 3 つの設定場所があり、1 つの設定レジストリ クラス インスタンスがそれらを組み合わせます (ただし、通常、これらの設定はアプリケーションではなく gunicorn のみに使用されます)。
- コマンド ライン パラメータ。
- 構成ファイル。(動的に任意の設定を持つことができる Python で書かれた Django のように。)
- 貼り付けアプリケーションの設定。
Pyramid の場合、Pyramid のドキュメントによると、デプロイメント設定は通常、pyramid.registry.Registry().settingsに入れることができます。しかし、pyramid.router.Router()インスタンスが存在する場合にのみアクセスされるようです。つまり、アプリケーション「main.py」の起動プロセス中に、pyramid.threadlocal.get_current_registry().settings は None を返します。
たとえば、私は通常、SQLAlchemy モデル モジュールでいくつかのビジネス ロジックを定義します。これには、次のような展開設定が必要です。
myapp/models.py
ただし、「settings['external_api_endpoint']」は、「settings」が None であるため、TypeError 例外を発生させます。
私は2つの解決策を考えました。
「models.py」で「config」引数を受け入れる callable を定義し、「main.py」はそれを Configurator() インスタンスで呼び出します。
/li>myapp/models.py
または、空のモジュール「app/settings.py」を入れて、後で設定を入れます。
/li>myapp/__init__.py
どちらのソリューションも要件を満たしていますが、面倒に感じます。私が欲しいのは以下です。
開発.ini
development.ini は文字列型の定数しか持てないため、大まかな設定を定義します。
/li>myapp/settings.py
任意の変数(型)を設定できるため、development.ini に基づいて詳細設定を定義します。
/li>
その後、他のモジュールは「import myapp.settings」を介して任意の展開設定を取得できます。または、"settings.py" よりも Registry().settings の方が望ましい場合は、**settings kwargs と "settings.py" を組み合わせて、"main.py" の起動プロセス中に Registry().settings に登録することができます。
とにかく、起動時に設定辞書を取得する方法は?または、Pyramid は、デプロイ設定を必要とするすべてのコードを、 request.registry.settingsを通じていつでも設定辞書を取得できる「ビュー」callable に配置するように優しく強制しますか?
編集
ありがとう、マイケルとクリス。
Pyramid がスレッドローカル変数 (レジストリとリクエスト)、特に複数の Pyramid アプリケーションのレジストリ オブジェクトを使用する理由がようやくわかりました。
ただし、私の意見では、展開設定は通常、アプリケーション固有のものを定義するビジネス ロジックに影響を与えます。これらのロジックは通常、Config() または Registry() に簡単にアクセスできる「app/ init .py」または「app/views.py」以外の 1 つ以上の Python モジュールに配置されます。これらの Python モジュールは通常、Python プロセス レベルで「グローバル」です。
つまり、複数の Pyramid アプリケーションが共存する場合でも、独自のスレッドローカル変数にもかかわらず、それらは Python プロセス レベルでアプリケーション固有のものを含む可能性のある「グローバル」Python モジュールを共有する必要があります。
当然のことながら、これらのモジュールはすべて、アプリケーションの「メイン」呼び出し可能によって Configurator() で呼び出される「initialize()」callalbe を持つことができます。要件。しかし、Pyramid の設計とはいえ、Pyramid の初心者 (私のような) や、「アプリケーションが大きい、または設定が非常に多い」開発者は、面倒に感じるかもしれません。
したがって、Registry().settings は実際の「スレッドローカル」変数のみを持つべきであり、通常のビジネス ロジック設定を持つべきではないと思います。複数のアプリケーション固有のモジュール、クラス、callables 変数などを分離する責任は、開発者が負う必要があります。今のところ、私の観点から、クリスの答えを取り上げます。または、「メイン」呼び出し可能で、「execfile('settings.py', settings, settings)」を実行し、「グローバル」スペースに配置します。
python - mongodbを使用してピラミッドでユニットテストを作成するにはどうすればよいですか?
ストレージに mongodb を使用するピラミッド プロジェクトがあります。テストを作成しようとしていますが、mongodb への接続を指定するにはどうすればよいですか?
より具体的には、どのデータベースに接続する必要がありますか (テストしますか?)、フィクスチャはどのように使用しますか? Django では一時データベースを作成しますが、ピラミッドではどのように機能しますか?
python - (Python/Pyramid) 標準のリスト/フォーム エディタを使用するためのより良い方法は?
私はいくつかの Pyramid (以前の Pylons) プロジェクトに取り組んでおり、コンテンツ (ユーザー アカウント、ログ エントリ、または単に他のデータなど) のリストを表示する必要があることがよくあります。ユーザーはリストをページ分割し、行をクリックして、その行の内容を編集できるフォームを取得できる必要があります。
現在、私は常に車輪の再発明を行っており、ページネーションに Webhelper を使用する Mako テンプレート、ダイアログを提供するための Jquery UI、クライアント側とサーバー側で手作業でエディター フォームと AJAX リクエストを作成しています。
ご存知かもしれませんが、これは非常に多くの時間を消費します。だから私が疑問に思っているのは、毎回ホイールを再発明することなく、リスト、エディターダイアログ、およびサーバー/クライアント通信を提供するより良い方法はありますか?
Django は、ユーザー アカウントやその他のものをすぐに使用できるようにすることで、その大きな負担を軽減していると聞きました。しかし、私の場合はユーザー アカウントだけではなく、サーバー側の SQL データベースに格納されているあらゆる種類のデータであり、ユーザーが編集できる必要があります。
前もって感謝します!
python - Python が HTML テキストエリアからのテキスト入力を適切に処理しない
通常の入力タイプの HTML ページに標準フォームがあります: text
, select
, submit
. Python ( Pyramidフレームワーク) を使用してこれらのフォームを処理するのは簡単で、問題もありませんでした。
ただし、この特定のフォームでは、textarea
より長い複数行の入力を受け入れるために a を使用する必要がありました。Python でユーザー入力を処理するときは、次のコードを使用しました。
これはtext
入力には機能しますが、入力には機能しませんtextarea
。 textarea
Unicode 文字が含まれている場合、入力は処理されず、次のエラーがスローされます。
これには何か理由がありますか?入力がUTF-8ではなくASCIIとして扱われていると想定しているようtextarea
ですが、これを変更する方法がわかりません。
詳細: フォームの送信元のページは、文字セットが UTF-8 に設定された HTML5 ページです。
編集: ウラジミール・パラントは、それがすでにデコードされていることを示唆しており、私はこれをチェックします:
print isinstance(request.params['form_element'], str)
戻り値False
print isinstance(request.params['form_element'], unicode)
戻り値True
python - Pyramidで、コンテキストの内容に基づいて異なるレンダラーを使用するにはどうすればよいですか?
製品に関して入手可能な情報に応じて表示したい3つの異なる製品ページレイアウトがあります。トラバーサルを使用して、ProductFinder
すべての情報を取得するというクラスがあります。たとえば、ユーザーはdomain / green / smallに移動ProductFinder
し、私のDBから緑色で小さいすべての製品を一覧表示します。このリストは、クラス内のself.productsProductFinder
です。私の__init__.py
中に次の行を追加しました:
products.pyには次のものがあります。
別のマコをレンダリングしたいのですが、context.productsの内容に基づいています。パイロンでは、私は次のようなことをしたでしょう:
では、コンテキストの内容に基づいて別のテンプレートをレンダリングするにはどうすればよいですか?
python - DeformとColanderを使用してファイルのアップロードを容易にする方法は?
製品のさまざまな画像を表す一連のファイルを含むフォームをレンダリングしたいと思います。ファイルの提供は簡単である必要があるため、ファイルがない場合でもフォームを検証する必要があります。これどうやってするの ?
これが私が使用するザルスキーマです:
私は次のような「欠落している」引数を追加しようとしました:
何か機能的になると思います
しかし、それが正しい方法かどうかは本当にわかりません...
ありがとう !
python - Pyramid での動的なユーザー ベースの承認
Pyramid docsにあるセキュリティ ガイドラインと wiki チュートリアルAdd Authorizationに従っています
ここで、グループではなく単一のユーザーに基づいて制限を追加する必要があります。
たとえば、ブログ編集者がすべてのコメントを確認する権限を持っている場合、投稿者だけが投稿自体を編集できるとします。
最初のタスクでは、次のようにルート ACL に含めます。
しかし、edit_post
どうですか?
私はこの回答を読みましたが、リソースツリーを構築する必要がないため、私のニーズにはやり過ぎのようです。
python - Python pyramid_simpleform関係をどのように処理しますか?
Pylons 1でformalchemyを使用した後、 pyramid_simpleformを使用して最初のステップを進めています。
私が始めているフォームは非常に単純です。いくつかのオプションがあり、ユーザーはそれらをチェックする必要があります。
ここでフォームクラス:
ここでは、インスタンスが表示されています。
としましょうmodel.id_opt == 3
、
ここでは、テンプレート内のそれぞれoption
にラジオボタンを作成します。model
私が期待していたのは、次checked="checked"
のid_opt == 3
ようなものでした。
しかし、私は何も得られません。
チェックオプションを自分で設定する必要がありますか?