У вас есть модель под названием Post? если это так, попробуйте использовать это:
def works(request):
works = Post.objects.all()
context = {'works': works}
return render(request, 'portfolio.html', context)
Попробуйте это в шаблоне
{% for work in works %}
<h3 class="text-center card-title title font-weight-bolder">{{work.title}}</h3>
{% endfor %}
Для изображения добавьте это в url.py проекта
from django.conf.urls.static import static
urlpatterns = [
........
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
settings.py
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
В views.py добавить запрос. ФАЙЛЫ для добавления поля изображения
form = AddPortfolio(request.POST or None,request.FILES or None)
В шаблон добавить enctype = "multipart/form-data"
<form action="" method="post" enctype = "multipart/form-data">
И получить доступ к изображению в шаблоне, как это
{% for work in works %}
<img src = /media/{{work.img}} width="" height="">
{% endfor %}