Файл Django не отображает входные данные на сайте
Ранее у меня была похожая проблема с неправильной итерацией кода для вывода таблицы, но теперь я пробую список описаний, и он не показывает ни одного из моих входных данных. Любая помощь будет очень признательна!
Views.py
from django.shortcuts import render
from django.http import HttpResponse
from .models import products, typeWork
def hello(request):
context = typeWork.objects.all()
context2 = {'context':context}
return render(request, 'products/index.html', context2)
def detail(request, product_id):
context3 = typeWork.objects.get(id=product_id)
context4 = {'context3':context3}
return render(request, 'products/detail.html', context4)
Detail.html
{% extends 'base.html' %}
{% block content %}
<dl>
<dt>Work</dt>
<dd>{{context4.work}}</dd>
<dt>Type of Work</dt>
<dd>{{context4.genre}}</dd>
</dl>
{% endblock %}
Рабочий код для таблицы (как будто он показывает входные данные в таблице, просто добавляю, чтобы посмотреть, может ли это дать какое-то понимание того, почему detail.html не показывает входные данные
index.html
{% extends 'base.html' %}
{% block content %}
<table class="table table-bordered table-hover">
<thead>
<tr>
<th>Work</th>
<th>Type of Work</th>
<th>Hours needed</th>
</tr>
</thead>
<tbody>
{% for context2 in context%}
<tr>
<td>{{context2.work}}</td>
<td>{{context2.genre}}</td>
<td>{{context2.hoursWorked}}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %}
Фотография моей актуальной проблемы
Это скорее просьба о разъяснении я изменил views.py на следующий код я просто хотел бы получить разъяснение почему это работает и честно говоря я думал что я пробовал это раньше я думаю что нет так как это работает сейчас
from django.shortcuts import render
from django.http import HttpResponse
from .models import products, typeWork
def hello(request):
context = typeWork.objects.all()
context2 = {'context':context}
return render(request, 'products/index.html', context2)
def detail(request, product_id):
context3 = typeWork.objects.get(id=product_id)
context4 = {'context4':context3}
return render(request, 'products/detail.html', context4)
Мне кажется, вы немного путаете вещи, называя все контекстом1 или контекстом4.
Контекст - это то, что передается в шаблон, и в основном это словарь переменных, которые могут быть кверисетами, строками, другими словарями или чем-то еще. Итак, что вы сделали вначале (для перевода с более четкими именами переменных):
def detail(request, product_id):
type_of_work = typeWork.objects.get(id=product_id)
context = {'type_of_work_context':type_of_work}
return render(request, 'products/detail.html', context)
и затем, по вашему мнению, вы сослались на
<dd>{{context.work}}</dd>
вместо
<dd>{{type_of_work_context.work}}</dd>
Во втором примере, который сработал в вашем ответе, вы фактически дали контексту dict то же имя, что и записи в нем, так что довольно удачно, что это сработало.
Просто в качестве стилистической рекомендации, называйте контекстную дикту "контекстом", а элементы внутри нее более узнаваемыми именами, отражающими их содержание.