#python #django
#python #django
Вопрос:
привет, когда я сохраняю изображения от моего администратора, они сохраняются в каталоге проекта следующим образом images/images/myimg.jpg .. но когда я пытаюсь отобразить их в своем шаблоне следующим образом
<img src="{{About.image.url}}" alt="profile photo">
изображение не отображается.. когда я просматриваю страницу в Chrome… он показывает, что источник изображения неизвестен..
<img src="(unknown)" alt="profile photo">
пожалуйста, посмотрите файлы..
settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS =[
os.path.join(BASE_DIR,'portfolio/static')
]
STATIC_ROOT = os.path.join(BASE_DIR,'media')
MEDIA_URL ='/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'images')
проект urls.py
from django.contrib import admin
from django.urls import path,include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('home/', include("home.urls")),
path('blog/', include("blog.urls")),
] static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT )
модель, имеющая изображение, находится внутри приложения с именем «home»
models.py из приложения home
from django.db import models
import datetime
# Create your models here.
class About(models.Model):
image = models.ImageField(upload_to = 'images')
desc = models.TextField()
home/views.py
from django.shortcuts import render
from home.models import *
from django.views.generic import ListView
# Create your views here.
def index(request):
abt = About.objects.all()
return render(request,'home/index.html',{'abt': abt.first()})
def Experience(request):
Exp = Experience.objects.all()
return render(request,'home/Experience.html',{'Exp': Exp})
class MyView(ListView):
context_object_name = 'name'
template_name = 'home/index.html'
queryset = About.objects.all()
def get_context_data(self, **kwargs):
context = super(MyView, self).get_context_data(**kwargs)
context['Experience'] = Experience.objects.all()
context['Education'] = Education.objects.all()
context['Award'] = Award.objects.all()
context['Membership'] = Membership.objects.all()
context['About'] = self.queryset
return context
Комментарии:
1. Пожалуйста, исправьте свой отступ. С каким представлением у вас возникли проблемы?
Ответ №1:
если вы передаете набор запросов, попробуйте зациклить их и получить доступ к каждому изображению
{% for data in About %}
<img src="{{data.image.url}}" alt="profile photo">
{% endfor %}
Комментарии:
1. привет, прутви .. это сработало.. но у меня есть вопрос.. эта конкретная модель будет иметь только одну строку… нужно ли нам использовать цикл for даже для синглетов
2. Если вы хотите отправлять всегда один объект, то в queryset вместо
About.objects.all()
passAbout.objects.first()
тогда нет необходимости в for-loop, потому что он вернет один объект, а не queryset