2016-07-31 41 views
3

昨晚我上傳了我的項目到pythonanywhere.com,我想測試我的生產設置。在我的一個模型中,我允許用戶上傳 JPG(團隊徽標)。上傳過程效果良好,文件落入我的MEDIA_ROOT。問題是,當我嘗試在我的模板中訪問它(將其顯示在頁面上)時,我得到了404。我的第一個想法是我的MEDIA_URL配置不正確,但我仍然不知道爲什麼。我想說我的媒體文件夾不在項目中 - 它在外面。 在開發模式我看到徽標(我有如果settings.DEBUG:urlpattern + =靜態(...)選項設置正確)。404上的媒體文件 - Django

我使用Django和Python 2.7 這裏1.9.7是我的代碼:

我的模型:

class Team(models.Model): 

name = models.CharField(verbose_name='Name of the team', max_length=24) 
logo = models.ImageField(upload_to='team_logos', verbose_name='Logo', blank=True, null=True) 
def get_logo(self): 
    u"""Get path to logo, if there is no logo then show default.""" 
    if self.logo: 
     return self.logo.url 
    return '/static/img/default_team_logo.jpg' 

我Settings.py:

STATIC_URL = '/static/' 
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "media", "soccerV1", "static") 
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "media", "static"), 
) 
MEDIA_URL = '/media/' 
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "media", "soccerV1", "media") 

而且我的模板我要求的徽標:

<td><img src="{{ details.get_logo }}" alt="{{ details.name }} logo" height="64px" width="64px"></td> 
+0

你配置了什麼從MEDIA_URL實際提供文件? –

回答

6

您需要在PythonAnywhere的儀表板中設置媒體文件映射。從他們documentation

  • 轉到上PythonAnywhere儀表盤
  • 轉到靜態文件部分網絡標籤
  • URL部分輸入相同的URL MEDIA_URL(在你的case,/media/
  • 輸入從MEDIA_ROOT到路徑部分的路徑(完整路徑,包括/home/username/etc

然後點擊刷新和您上傳的文件應該被送達正確。

+0

謝謝@rafalmp - 你真的拯救了我的一天:)我正在尋找pythonanywhere.com的幫助部分,但是我找不到它。再次感謝! :) –