Язык шаблонов Django не отображается

#python #django

#python #django

Вопрос:

Я совершенно новичок в Django и следую руководству. Я надеюсь, что это просто очевидная ошибка, но я не могу заставить свой веб-браузер отображать что-либо, написанное на языке шаблонов Django, и я не могу понять, почему.

Вот моя структура каталогов для некоторого контекста:https://imgur.com/dGNIiDa

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>
  

Когда я захожу localhost:8000/budget/1 в свой браузер, это все, что отображается:https://imgur.com/j2Vh0yb

Очевидно, что Django находит файл шаблона и отправляет его в браузер, но все, что написано внутри {}, вообще не распознается и не отображается. Я в точности следовал руководству и понятия не имею, почему оно не работает. Есть идеи?

Комментарии:

1. Это должно быть <p>This is a {{ test }}</p> в вашем шаблоне. Имя context не определено в вашем шаблоне. На ваш взгляд, это просто имя переменной для словаря.

2. Вы пробовали просто <p>This is a {{ test }}</p> , без context ?

Ответ №1:

Вам не нужно context выражение в шаблоне; все, что вы помещаете в контекст, — это «глобальные» значения в шаблоне, поэтому попробуйте

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

вместо этого.

Движок шаблонов Django обладает неприятным свойством молчать о несуществующих свойствах, поэтому отлаживать подобные вещи сложно.

Комментарии:

1. Спасибо, что сделали это! Я не осознавал, что переменные, предоставляемые context , были глобальными — это сбивало меня с толку ранее, когда я пытался написать более сложный шаблон.