0

Pythonリクエストを使用してdjango管理サイトからビデオをアップロードしようとしています。私は問題なくログインしています:

import requests

login_url = "http://127.0.0.1:8000/admin"
client = requests.client()
csrftoken = client.cookies['csrftoken']

login_data = {'username': 'username', 'password': 'password',
              'this_is_the_login_form': '1',
              'csrfmiddlewaretoken': csrftoken
             }

r = client.post(login_url, data=login_data)

ログインした後、(ビデオ) ファイルをアップロードするページをプルします。

target_url = "http://127.0.0.1:8000/admin/product/700/"
r = client.get(target_url)

HTML には、ファイルがアップロードされたときにリッスンするためのスクリプト (.get() 要求で取り込まれていない) があります。

var object_id = 700;
$(document).ready(function() {
    // Upload button handler
    $('.file').on('change', handleFileSelect);
    ...

アップロードしようとしているオブジェクトにファイルを設定し、ファイル引数が設定されることを期待して別の取得リクエストを作成して、スクリプトを起動してアップロードプロセスを開始しようとしました。

<input id="file" class="file" type="file" name="file">


data = {'file': open('file.flv', 'rb')}
r = client.get(target_url, data=data)

ファイルをアップロードするために、target_url にリクエストを送信し、アップロード スクリプトをプルダウンし、アップロード スクリプトを起動するにはどうすればよいですか?

4

1 に答える 1

1

アップロード スクリプトは Javascript で実行され、ブラウザ (クライアント側) が必要です。Python (サーバー側) から処理を行っているため、Javascript は実行されません。

私がしたいことは、ブラウザで Firebug を使用し、実際にファイルをアップロードするときに送信されるリクエストを調べることです (また、Javascript 関数を読むと、そのファイルをアップロードするためにクライアント ブラウザが通常何をするかを理解するのに役立つ場合があります)。

次に、python-requests を使用して、python から同等の POST を実行できます (必要なすべてのパラメーターを含む)。ただし、ファイルを送信しているため、「マルチパートでエンコードされた」ファイルを投稿する必要がある場合があることに注意してください: http://www.python-requests.org/en/latest/user/quickstart/#post-a- multipart-encoded-file .

于 2013-10-31T19:39:02.240 に答える