2017-09-20 22 views
1

django管理インターフェースで画像をアップロードしたいと思います。開発中はすべて正常に動作しますが、ファイルをサーバーに置くと動作しません。 私のサーバーには2つの異なるパスがあります。 1つはすべてのソースファイルを入れ、もう1つはすべての静的ファイルを置く場所です。ソースファイルのDjangoは画像をアップロードします

パス:静的ファイルの/htdocs/files/project/

パス:私は、画像をアップロードした場合/htdocs/html/project/

、それは/htdocs/files/project/media/に保存されます。しかし、/htdocs/html/project/に保存したいと思います。パスを変更するにはどうすればよいですか?ここで

は私の設定です:

STATIC_URL = '/static/' 

MEDIA_URL = '/media/' 

MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'), 
    '/var/www/ssd1257/htdocs/html/' 
) 

そして、ここでは私のモデルである:

class News(models.Model): 
    title = models.CharField(max_length=200, null=False) 
    date = models.DateField(null=False, default=datetime.now) 
    text = models.TextField(null=False, blank=True) 
    image = models.ImageField(upload_to="./news/") 

答えて

0

、 'media')= "/ htdocs/files/project/media" Djangoは終了しないとパスを作成します

しかし、私はドットを "upload_to" "./news/")

Oアップロードされたファイルが保存されているパスを変更し、単にMEDIA_ROOT 注意を変更、

が、私はそれが= 'の/ var/www /のssd1257/htdocsに/ HTML /プロジェクトの

MEDIA_ROOTになります推測絶対フルパスを提供してください

また、file_nameのを避けるために保存する前にアップロードされたファイルの名前を変更するために、その優れた今、アップロードされたファイルは 'の/ var/www /のssd1257/htdocsに/ HTML /プロジェクト/ニュース' に保存されます

def get_news_image_path(instance, filename): 
    path_first_component = ‘news/‘ 
    ext = filename.split('.')[-1] 
    timestamp = millis = int(round(time.time() * 1000)) 
    file_name = ‘news_’ + str(instance.id) + str('_logo_image_') + timestamp + str('.') + ext 
    full_path = path_first_component + file_name 
    return full_path 

class News(models.Model): 
    title = models.CharField(max_length=200, null=False) 
    date = models.DateField(null=False, default=datetime.now) 
    text = models.TextField(null=False, blank=True) 
    image = models.ImageField(upload_to=get_news_image_path) 

を競合

あなたはまた

を完了している

、また、設定された適切なMEDIA_URL

例:

また MEDIA_URL + upload_toパスになり、アップロード画像のURLを生成するときMEDIA_URL =「メディアは ので、設定しますこれらのURLを適切な場所から提供するWebサーバー

+0

あなたの助けをありがとう!:) –

0
from django.core.files.storage import FileSystemStorage  
upload_storage = FileSystemStorage(location=UPLOAD_ROOT, base_url='/') #upload root set to your project directory 
class News(models.Model): 
     title = models.CharField(max_length=200, null=False) 
     date = models.DateField(null=False, default=datetime.now) 
     text = models.TextField(null=False, blank=True) 
     image = models.ImageField(upload_to='/', storage=upload_storage) 
+0

現在のアップロード場所は/ htdocs/files/project/mediaです。どのようにして/ htdocs/html/project/mediaへのパスを変更できますか? –

0

自ら招いこの設定によって:

MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 

変更すること:

アップロードされたファイルは以下のパス MEDIA_URL +モデルクラスの属性

だからあなたの場合は、 MEDIA_ROOT = os.path.join(BASE_DIR「upload_to」で指定したパスに正常に保存されている

MEDIA_ROOT = '/htdocs/html/project/' 
関連する問題