[英]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.