2016-12-09 22 views
0

私はWindows 7マシンでデータクローラーを実行しています。私はCentOS 7サーバーのDjango 1.10プロジェクトに結果をリモートで挿入します。私は両方のマシンでDjangoプロジェクトのコピーを持っています。これは、ImageFieldを除くモデルのすべてのフィールドで正常に機能します。WindowsでDjangoスクリプトを実行してLinux上でモデルを作成する

ここでは、保存を行うスクリプトの一部です。

m = Object(strings=strings) 
m.save() 
image_content = ContentFile(requests.get(image_url).content, id + '.jpg') 
m.image_file.save("C:\\Users\\Me\\Documents\\mysite.com\\imgs\\" + id + ".jpg", image_content) 
m.save() 

画像フィールドは次のように宣言された:Windowsマシン上で私のsettings.pyファイルに行がある

image_file = models.ImageField(upload_to='avatars/', null=True, default=None) 

:最初の実行で

MEDIA_ROOT = "/var/www/mysite.com/myproj/images/" 

を、エラーがありませんサーバ上のimage_feildは "。"に設定されています。セカンドランで

は、エラーがある:

IOError: C:\var\www\mysite.com\myproj\images exists and is not a directory.

だから、これはWindowsマシン上で作成されているが、私はMEDIA_ROOTは、サーバー上の宛先ディレクトリとして使用することにしたいです。

+0

@ e4c5私はそこに書かれたくありません。私はそれがリモートサーバーに書いておきたい。 – User

+0

@ e4c5もローカルでその場所から読み取る必要があるためです。 – User

答えて

0

osモジュールを使用してください。

import os 
if os.name == 'nt': 
    # Windows code. 
else: 
    # Unix code. 

またはユーザーの相対パス。

# In settings. 
import os 
BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 
MEDIA_ROOT = os.path.join(BASE_DIR, '../media_root') 

# In other places. 
mage_file.save(os.path.join(MEDIA_ROOT, '/dir_name/file_name.jpg'), image_content) 
関連する問題