簡體   English   中英

Django - 為用戶上傳的圖像提供服務

[英]Django - serving user uploaded images

我在從Django應用程序提供用戶上傳文件時遇到一些問題:

來自models.py:

class Picture (models.Model):

    title = models.CharField(max_length=48)

    date_added = models.DateTimeField(auto_now=True)

    content = models.ImageField(upload_to='pictures')

從Django管理員,文件上傳到user_res / pictures /文件夾。

從項目的settings.py:

MEDIA_ROOT = 'user_res'

MEDIA_URL = '/user_res/'

STATIC_ROOT = ''

STATIC_URL = '/static/'

每次我嘗試引用靜態資源(即css或js文件)時,一切都可以正常使用諸如

http://localhost:8000/static/<subfolder>/main.css.

但是,我無法訪問用戶上傳的文件(由user_res / pictures文件夾中的管理界面創建的文件與相對URL,如

user_res/pictures/test.jpg

使用來自Django Picture模型可調用的此代碼行動態創建URL:

return '<img src="{}"/>'.format(self.content.url)

我沒有url.py文件中的靜態或媒體文件的專用url-s。

有沒有人知道如何讓Django提供媒體文件? 我知道對於實時環境,我需要配置一個http服務器來服務該特定目錄,但是現在我想維護一個輕量級的開發套件。

謝謝。

編輯urls.py文件,如下所示。

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = patterns('',
    # ... the rest of your URLconf goes here ...
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

編輯您的項目settings.py看起來像:

#Rest of the settings
MEDIA_URL = '/media/'
MEDIA_ROOT = 'media'
STATIC_ROOT = ''
STATIC_URL = '/static/'

請仔細閱讀有關提供用戶上傳文件的官方Django文檔。 鏈接到文檔: https//docs.djangoproject.com/en/1.5/howto/static-files/#serving-files-uploaded-by-a-user

我認為url屬性返回一個相對URL( Django的FileField文檔 ),所以你應該:

return '<img src="{}"/>'.format(MEDIA_URL + self.content.url)

相對URL不起作用,因為訪問“http:// localhost / books /”的用戶將請求“http://localhost/books/user_res/pictures/test.jpg”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM