После загрузки изображения в админ-панели Django я не вижу его в своем шаблоне? - PullRequest
0 голосов
/ 21 сентября 2018

Я успешно загрузил изображение из моей админ-панели с помощью ImageField в моем model.py, но я не могу увидеть эффект в моем шаблоне.Пожалуйста, проверьте код ниже и скриншоты.заранее спасибо за помощь.Я могу загрузить изображение, изменить изображение ... в моем администраторе (localhost: 8000 / admin), но проблема в том, что я не могу видеть изображение в (localhost: 8000).

возможность.html

 {% extends "frontend/base.html" %} {% load static %} {% block title %}Opportunities{% endblock %} {% block content %}
<section id="blog" class="container">
    <div class="blog">
        <div class="row">
            <div class="col-md-10">
                <div class="blog-item">
                    <div class="row">
                        <div class="col-xs-12 col-sm-2">
                        </div>
                        <div class="col-xs-12 col-sm-10 blog-content">
                            <a href="#"><img class="img-responsive img-blog" src="{{ opportunity.image1 }}" width="100%" alt="" /></a>
                            <h4>{{ opportunity.heading1 }}</h4>
                            <p>{{ opportunity.subheading1 }}</p>
                            <a class="btn btn-primary readmore">{{ opportunity.link1 }} <i class="fa fa-angle-right"></i></a>
                        </div>
                    </div>
                </div>
            </div>
            <aside class="col-md-4">
            </aside>
        </div>
    </div>
</section>
{% endblock %}

views.py

def opportunities(request):
    navbar = get_object_or_404(Navbar, ~Q(status='draft'))
    opportunity = get_object_or_404(Opportunity, ~Q(status='draft'))

    context = {
        "opportunity": opportunity,
        "navbar": navbar,
    }

    return render(request, 'frontend/opportunities.html', context)

admin.py

class OpportunityAdmin(admin.ModelAdmin):
    list_display = ('heading1', 'author', 'published', 'status',)
    list_filter = ('status', 'created', 'published', 'author')

admin.site.register(Opportunity, OpportunityAdmin)

models.py

class Opportunity(models.Model):
    STATUS_CHOICES = (
        ('draft', 'Draft'),
        ('published', 'Published'),
    )
    image1 = models.ImageField(upload_to = 'pic_folder/')
    heading1 = models.TextField(max_length=500)
    subheading1=models.TextField(max_length=500)
    link1 =models.CharField(max_length=30)

    author = models.ForeignKey(User, related_name='opportunity')
    published = models.DateTimeField(default=timezone.now)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    status = models.CharField(max_length=9, choices=STATUS_CHOICES, default='draft')

    def __str__(self):
        return self.heading1

urls.py

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'', include('frontend.urls')),
]
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

settings.py

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'django.template.context_processors.media',
            ],
        },
    },
]
STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

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

ниже скриншот localhost: 8000 / admin, который является административным порталом screenshot of admin panel ниже скриншот localhost: 8000, который является html-шаблоном screenshot of opportunity.html

1 Ответ

0 голосов
/ 21 сентября 2018
<img class="img-responsive img-blog" src="{{ opportunity.image1 }}" width="100%" alt="" />

Исправьте вышеприведенную строку следующим образом

<img class="img-responsive img-blog" src="{{ opportunity.image1.url }}" width="100%" alt="" />
...