2017-09-20 7 views
-1

私はPDFファイルをアップロードできる小さなdjangoアプリを持っています。ファイルurllibからDjangoにアップロード

これまでは、人間だけがWebアプリケーションを使用していました。

将来、スクリプトはファイルをアップロードできるはずです。

今まで我々は(settings.AUTHENTICATION_BACKENDS)スクリプトファイル

私の現在の戦略

私は追加を認証し、アップロードすることができるはず

ゴール認証にModelBackend使用します新規ユーザーremote-system-fooとパスワードを入力してください。

何とかdjango Webアプリケーションにログインしてから、スクリプトを使用してpdfファイルをアップロードしてください。

httpクライアントスクリプトのリクエストライブラリを使用したいと思います。 DjangoのWebアプリケーションにログインするための方法

質問

  • 私の現在の戦略は正しいか、より良い戦略はありますか?

答えて

0

は、我々は今、このライブラリを使用します。https://github.com/hirokiky/django-basicauth

我々は対話型の人の人間のためのAPIのビューとセッション/クッキー認証のためのHTTP-基本認証を使用するこの方法です。

1

リクエストライブラリを使用して任意のサイトにログインできますが、サイトで必要なパラメータに応じてPOSTを調整する必要があります。状況が簡単ではない場合は、サイトにログインしてからのChromeのデベロッパーツールの投稿データをご覧ください。ここに私がサイトにログインするのに使用したコードがありますが、あなたが必要とすることを簡単に行うことができます。

from bs4 import BeautifulSoup as bs 
import requests 


data = requests.session.get(page) 
soup = bs(data.text, "lxml") 

# Grab csrf token 
# soup.find(...) or something 

# The POST data for authorizing, this may or may not have been a django 
# site, so see what your POST needs 
data = { 
    'user[login]': 'foo' , 
    'user[password]': 'foofoo', 
    } 

# Act like a computer, and insert token here, not with data! 
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) 
      AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 
      Safari/537.36', 'X-CSRF-Token': token 
} 

requests.session.post('https://www.examplesite.com/users/sign_in', data=data, 
headers=headers) 

あなたのセッションはログインしていますので、あなたはpdfをアップロードすることができます。しかし、私はリクエストを介してアップロードしようとしたことはありません。ここでは、これは奇妙な解決策のように感じていると言われています。ファイルをfixturesまたはRunSQL、またはその場所(たとえばAWSバケットURL)としてデータベースにアップロードすることを検討することもできます。しかし、これは私の新しい領域です。 お手伝いをしてください。

+0

はい、これは機能するはずです。私はdjango Webアプリケーションを完全に制御できます。私はそれを変更することができます。クライアントをよりシンプルにしたいと思います。どういうわけか私はあなたの解決策が少し壊れやすいと感じています。私を間違えないでください。あなたの解決策は有効な答えです。 – guettli

0

私は一致する解決策を見つけていないので、私が書いたとこの公表:

https://pypi.python.org/pypi/tbzuploader/

一般的なHTTPアップロードツールを。

httpアップロードが成功した場合、ファイルは "done"サブ ディレクトリに移動します。ファイルのペアを処理します:

その他の機能作成したHTTPステータス201で応答 サーバがあれば

アップロードがtbzuploaderによって成功し見なされます。

たとえばあなたは4つのファイルがあります:a.pdf、a.xml、b.pdf、b.xml

を最初のアップロードがa.pdfとa.xml、および第二のアップロード Bを取る必要があります。 pdfとb.xmlを開き、-patternsのドキュメントを読んでください。

関連する問題