Hochgeladene Bilder nicht angezeigt, falscher Pfad

Ich habe ein problem mit der Anzeige von Bildern, die hochgeladen wurden von admin-panel. Django macht falsche Weg, wahrscheinlich wegen meiner Konfiguration Fehler irgendwo...

Dies ist mein Modell definition:

class Article(models.Model):
    """News article, displayed on homepage to attract users"""
    class Meta:
        db_table = 'article'
    title = models.CharField(max_length=64)
    headline = models.CharField(max_length=255)
    content = HTMLField()
    image = models.ImageField(upload_to = 'articles/', null=True, blank=True)
    active = models.BooleanField()
    created_at = models.DateTimeField()
    def __unicode__(self):
        return self.title

Dies ist die url-Konfiguration:

from django.conf.urls import patterns, include, url
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = patterns('',
# some stuff
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

settings.py:

PROJECT_DIR = os.path.dirname(__file__)
MEDIA_ROOT = os.path.join(PROJECT_DIR, "media")
MEDIA_URL = '/media/'

Ansicht:

def slider(request):
    context = Context ({ 'articles': Article.objects.order_by('-created_at')[:5] })
    return render(request, 'articles/slider.html', context)

werden und die Vorlage:

{% for article in articles %}
  <img src="{{ article.image.url }}" alt="" />

Ich würde erwarten, dass django zu erbringen http://127.0.0.1:8000/media/articles/slide-02.jpg aber jetzt macht es http://127.0.0.1:8000/media/slide-02.jpg. Ich habe definiert, die upload_to=articles/ in der model-Klasse. Also warum die article.image.url Attribut zurückgeben, einen Weg zu finden, ohne diese bedeutende Verzeichnis?


edit: ich habe etwas falsch mit meinem Modell. Es erkennt nicht die upload_to Verzeichnis:

$ ./manage.py shell
Python 2.7.3 (default, Aug  1 2012, 05:14:39) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from articles.models import Article
>>> Article.objects.all()
[<Article: Blackened Recordings Launches>, <Article: The Rockin' Return of Deep Purple>, <Article: See Emily Day 20th April>, <Article: Celebration Day Premieres In Four Countries Announced>, <Article: Waging heavy innovation>, <Article: Rush to play festival D'Ete, Quebec City>]
>>> Article.objects.all().get(pk=1)
<Article: Blackened Recordings Launches>
>>> Article.objects.all().get(pk=1).image
<ImageFieldFile: slide-03.jpg>
>>> Article.objects.all().get(pk=1).image.path
u'/var/www/django/djninja/djninja/media/slide-03.jpg'
>>> Article.objects.all().get(pk=1).image.url
'/media/slide-03.jpg'

Wieder, es sollte media/articles/slide-03.jpg statt media/slide-03.jpg. Also ich denke, alle routing/template ist ok, etwas stimmt nicht mit dem Modell.

  • Sieht es ok aus für mich. Vielleicht das Bild wurde hochgeladen, bevor Sie die upload_to=articles? Oder vergessen haben, klicken Sie auf " speichern in deinem editor nach hinzufügen, dass? (Sorry, habe zu Fragen).
  • alle Datensätze geladen werden mit Befestigungen/syncdb, also denke ich dass es funktionieren sollte ok.
  • versuchen /media/{{ article.image }}/
InformationsquelleAutor ducin | 2013-03-20
Schreibe einen Kommentar