nnowgoo
nnowgoo

Reputation: 28

Django Template Language Not Rendering

I am brand new to Django and following along with the tutorial. I'm hoping this is just an obvious mistake, but I am unable to get my web browser to render anything written in the Django template language and I can't figure out why.

Here is my directory structure for some context: https://i.sstatic.net/AXYrJ.jpg

project/urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('budget/', include('budget.urls')),
    path('admin/', admin.site.urls)
]

budget/urls.py:

from django.urls import path

from . import views

urlpatterns = [
    path('<int:account_id>/', views.get_account, name='detail'),
]

budget/views.py:

from django.shortcuts import render
from django.http import HttpResponse
from budget.models import Account, Transaction

def get_account(request, account_id):
    accts = Account.objects.filter(pk=account_id)

    context = {"test": accts}

    return render(request, 'budget/detail.html', context)

budget/templates/budget/detail.html:

<p>This is a {{ context.test }}</p>

When I visit localhost:8000/budget/1 in my browser this is all that is rendered: https://i.sstatic.net/5k2dL.jpg

Clearly Django is finding the template file and sending it to the browser, but anything that is written inside of {} does not get recognized or rendered at all. I've followed along exactly with the tutorial and I have no idea why it's not working. Any ideas?

Upvotes: 0

Views: 443

Answers (1)

AKX
AKX

Reputation: 168824

You don't need context in the expression in the template; all that you put in the context are "globals" in the template, so try

<p>This is a {{ test }}</p>

instead.

Django's template engine has the unfortunate property of being silent about nonexisting properties, so it's hard to debug stuff like this.

Upvotes: 1

Related Questions