2016-07-31 5 views
3

La nuit dernière, j'ai téléchargé mon projet sur pythonanywhere.com où je voulais tester mes paramètres de production . Dans un de mes modèles, j'autorise utilisateurs à télécharger JPG (Logo d'une équipe). Le processus de téléchargement fonctionne bien, le fichier atterrit dans mon MEDIA_ROOT. Le problème est que lorsque j'essaie d'y accéder dans mon modèle (pour l'afficher sur la page), je reçois un 404. Ma première pensée est que mon MEDIA_URL n'est pas configuré correctement mais je ne sais toujours pas pourquoi. Je veux dire que mon dossier multimédia n'est pas dans le projet - c'est à l'extérieur. Sur développement mode Je vois le logo (j'ai l'option if settings.DEBUG: urlpattern + = static (...) correctement définie).404 sur les fichiers multimédias - Django

J'utilise Django 1.9.7 avec Python 2.7 Voici mon code:

Mon modèle:

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' 

Mon 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") 

Et mon modèle où j'appelle pour le logo:

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

Qu'avez-vous configuré pour réellement servir les fichiers à partir de MEDIA_URL? –

Répondre

6

Vous devez définir un mappage de fichiers multimédias dans le tableau de bord de PythonAnywhere. De leur documentation:

  • Aller à l'onglet Web sur le tableau de bord PythonAnywhere
  • Aller à la section des fichiers statiques
  • Entrez la même URL que MEDIA_URL dans la section url (dans votre case, /media/)
  • Entrez le chemin d'accès MEDIA_ROOT dans la section chemin (chemin d'accès complet, y compris /home/username/etc)

puis appuyez sur Recharger et vos fichiers téléchargés doivent être servis correctement.

+0

Merci @rafalmp - vous avez vraiment sauvé ma journée :) Je cherchais la section d'aide pythonanywhere.com pour quelque chose comme ça, mais je ne pouvais pas le trouver. Merci encore! :) –