3

私は webpy を使用して Web サーバーを作成しています。現在、単純なフォームと、作成した特別なクラスがあります。ユーザーがフォームにコードを書き込めるようにしたいのですが、入力が関数呼び出しの場合はユーザーが送信した関数を呼び出し、関数呼び出しでない場合は入力で何でもできます。これは、テンプレート ファイルのどこかで達成する必要があると思いますか? 助けていただければ幸いです

4

2 に答える 2

5

私の理解が正しければ、クライアントが送信したコードをサーバー上で実行し、フォームから入力を取得する方法を探しています。

したがって、次のようなフォーム テンプレートがあるとします (textarea 要素の名前に注意してください)。

<form method="POST">
<textarea name="code" />
<input type="submit">
</form>

ページ クラスに POST メソッドを追加して、入力を処理し、コードを実行します。

class MyPage:
    def POST(self):
        data = web.input()
        eval(data.code)

これは、完全に信頼していない人がアクセスできるフォームで行うべきことではありません。これにより、Web サーバーで必要なコードを実行できるようになるためです (たとえば、Web サーバー上のすべてのファイルを簡単に削除しようとする可能性があります) サーバー)。しかし、セキュリティ リスクに問題がない場合、または単に遊んでいる場合は、Python のevalのドキュメントを読んで、それに渡すことができる他の引数を確認してください。

于 2012-07-27T16:06:31.527 に答える
2

Python cgi スクリプトを作成し、Web サーバーの cgi-bin で実行します。ここにチュートリアルがあります。その後、スクリプトはフォームの入力にアクセスして、必要なことを何でも行うことができます。

于 2012-07-27T15:52:02.227 に答える