#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
, были глобальными — это сбивало меня с толку ранее, когда я пытался написать более сложный шаблон.