2017-01-16 14 views
0

nicht anzeigen Ich hoffe, Sie können mir mit meinem Django-Projekt helfen. Ich kann Bilder in einem Ordner "media_cdn" in einem Ordner hochladen, der auf dem Namen des Slugs basiert. Das Problem tritt auf, wenn ich versuche, das Bild in meiner Beitragsliste anzuzeigen und zu posten.Kann ImageField in Django Vorlage

Können Sie sich bitte meinen Code ansehen und eine Lösung anbieten. Ich habe stundenlang versucht, es zur Arbeit zu bringen. Bitte helfen Sie.

settings.py

STATIC_URL = '/static/' 
STATIC_ROOT = os.path.join(BASE_DIR, 'static/') 

MEDIA_URL = "/media/" 
MEDIA_ROOT = os.path.join(BASE_DIR, 'media_cdn/') 

models.py

def upload_location(instance, filename): 
    return "%s/%s" %(instance.slug, filename) 

class Post(models.Model): 
    category = models.ForeignKey(Category) 
    title = models.CharField(max_length=250) 
    slug = models.SlugField(max_length=250, unique=True) 
    image = models.ImageField(upload_to=upload_location, 
      null=True, 
      blank=True, 
      width_field="width_field", 
      height_field="height_field") 
    height_field = models.IntegerField(default=0) 
    width_field = models.IntegerField(default=0) 
    body = models.TextField() 
    date = models.DateTimeField() 
    updated = models.DateTimeField(auto_now=True) 

postlist.html

{% block content %} 
    {% for post in posts %} 
     <div class="container w3-card-4"> 
     {% if post.image %} 
      <img src="{{ post.instance.image.url }}"> 
     {% endif %} 
... 

post.html

{% block content %} 
<div class="row"> 
    <div class="container w3-card-4"> 
     {% if instance.image %} 
     <img src= "{{ instance.image.url }}" class="img-responsive"> 
     {% endif %} 
... 

url.py

from django.conf.urls import include, url 
from django.contrib import admin 
from django.conf.urls.static import static 
from django.conf import settings 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^', include('personal.urls')), 
    url(r'^blog/', include('blog.urls', namespace='blog', app_name='blog')), 
] 

if settings.DEBUG: 
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

Ich weiß nicht, was anderes zu versuchen, dieses Bild aus dem Ordner aufzurufen. Jeder Rat würde sehr geschätzt werden. Vielen Dank!

+0

Sie überprüfen 'if post.image' und dann' post.instance.image.url'? – dnit13

+0

post.image hat mein Problem gelöst. Ich danke dir sehr! – IoanCosmin

Antwort

1

Verwenden Sie post.image.url anstelle von post.instance.image.url. Überprüfen Sie die documentation.

ImageField erbt alle Attribute der FileField, die url enthält.

+1

Hey AKS, vielen Dank, es hat mein Problem gelöst. Aus irgendeinem Grund dachte ich, ich hätte das schon versucht, aber aus irgendeinem Grund funktionierte es beim ersten Mal nicht. Sie sparen mir viel Zeit. Ich wünsche ihnen einen wunderbaren Tag! – IoanCosmin

Verwandte Themen