2016-07-31 6 views
3

Letzte Nacht habe ich mein Projekt auf pythonanywhere.com hochgeladen, wo ich meine Produktion Einstellungen testen wollte. In einem meiner Modelle erlaube ich Benutzern, JPGs (Logo eines Teams) hochzuladen. Der Uploadvorgang funktioniert gut, die Datei landet in meinem MEDIA_ROOT. Das Problem ist, dass, wenn ich versuche, in meiner Vorlage darauf zuzugreifen (um es auf der Seite anzuzeigen) ich einen 404 bekomme. Mein erster Gedanke ist, dass meine MEDIA_URL nicht richtig konfiguriert ist, aber ich weiß immer noch nicht warum. Ich möchte sagen, dass mein Medienordner nicht im Projekt ist - es ist draußen. Auf Entwicklung Modus Ich sehe das Logo (Ich habe die wenn settings.DEBUG: urlpattern + = statische (...) Option richtig eingestellt).404 auf Mediendateien - Django

ich Django bin mit 1.9.7 mit Python 2.7 Hier ist mein Code:

Mein Modell:

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' 

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

Und meine Vorlage wo ich das Logo anrufe:

+0

Was haben Sie konfiguriert, um Dateien von MEDIA_URL tatsächlich zu übertragen? –

Antwort

6

Sie müssen ein Mediendatei-Mapping im PythonAnywhere-Dashboard festlegen. Aus ihrer documentation:

  • Zum Web Registerkarte auf dem PythonAnywhere Armaturenbrett
  • Zum Static Files Abschnitt
  • Geben Sie die gleiche URL wie MEDIA_URL im url Abschnitt (in Ihrem case, /media/)
  • Geben Sie den Pfad von MEDIA_ROOT in den Pfad ein (den vollständigen Pfad einschließlich /home/username/etc)

getroffen Dann Reload und Ihre hochgeladenen Dateien sollten korrekt bedient werden.

+0

Danke @rafalmp - du hast meinen Tag wirklich gerettet :) Ich habe die Hilfe von pythonanywhere.com für sowas gesucht, aber ich konnte es nicht finden. Danke noch einmal! :) –