Django Template not rendering {{ }}

Viewed 142

I'm not sure where I've gone wrong, but my template is not rendering. I believe I have set all the correct code in the following Python files, but I do not see it rendering. I am using postgresql if that matters:

urls.py:

from django.contrib import admin
from django.urls import path
from django.conf import settings
from django.conf.urls.static import static
import jobs.views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', jobs.views.home, name='home')
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

settings.py:

INSTALLED_APPS = [
    'blog.apps.BlogConfig',
    'jobs.apps.JobsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

views.py

from django.shortcuts import render

from .models import Job

def home(request):
    jobs = Job.objects
    return render(request, 'jobs/home.html', {'jobs': jobs})

models.py:

from django.db import models

class Job(models.Model):
    image = models.ImageField(upload_to = 'images/')
    summary = models.CharField(max_length = 200)

jobs/templates/jobs/home.html:

<div class="album py-5 bg-light">
    <div class="container">

      <div class="row">
        {% for i in jobs.all %}
        <div class="col-md-4">
          <div class="card mb-4 shadow-sm">
            <img src="" alt="">
            <div class="card-body">
              <p class="card-text">{{ jobs.summary }}test</p>
            </div>
          </div>
        </div>
        {% endfor %}
        </div>
      </div>
    </div>
1 Answers

jobs is a QuerySet of Job objects, hence it has no summary attribute. Here you used i as the iterator of jobs. It might be better to rename this to job, and thus render this with:

<div class="album py-5 bg-light">
    <div class="container">

      <div class="row">
        {% for job in jobs.all %}
        <div class="col-md-4">
          <div class="card mb-4 shadow-sm">
            <img src="" alt="">
            <div class="card-body">
              <p class="card-text">{{ job.summary }}test</p>
            </div>
          </div>
        </div>
        {% endfor %}
        </div>
      </div>
    </div>
Related