Не возвращается значение в django powered HTML
Искал решение почти 2 дня безрезультатно - любое руководство будет высоко оценено.
Данный 'views.py' выглядит следующим образом (все необходимые lib импортированы должным образом):
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse, HttpResponseRedirect
from django.urls import reverse
from django.template.context_processors import request
from django.views import generic
class HomeView(generic.TemplateView):
template_name = 'polls/djIndex.html'
def test(request):
data = {'temperature': '53F', 'state': 'NY', 'mood': ['good', 'bad']
return render(request, 'polls/djIndex.html',{'data':data})
На djIndex.html:
не работает (не возвращается значение).тест №1:
{% for key, value in data.items %}
<h3>{{key}}-----: {{value}}</h3>
{% endfor %}
тест №2:
{% for key in data.items %}
<p>Value of Key 1 : data["temperature"]</p>
{% endfor %}
тест №3
{% for key, value in data %}
<p>Key {{ key }}, Value {{ value }}</p>
{% endfor %}
тест №4
<h2> context2: {{data.temperature}}</h2>
Но эти работают на djIndex.html:
<h2> Temperature: {{temperature}}</h2>
<h2> State: {{state}}</h2>
<h2> Mood: {{mood}}</h2>
Вопрос: Как заставить эти нерабочие тесты #1-#4 работать на моей HTML странице. Особенно тест #3 и #4. Делаю ли я что-то не так в конфигурации Django, так как некоторые из этих тестов #1-#4 являются принятыми ответами на некоторых форумах в разных инстанциях?
Чтобы передать некоторый контекст в шаблон из TemplateView, основанного на классе, вы можете переопределить его get_contecxt_data()
Попробуйте
class HomeView(generic.TemplateView):
template_name = 'polls/djIndex.html'
def get_context_data(self, **kwargs):
context = super(HomeView, self).get_context_data(**kwargs)
context['temperature'] = '53F'
context['state'] = 'NY'
return context
Почему это не сработало раньше
У TemplatView или любого другого представления на основе класса нет метода test()
для обработки запросов, поэтому ваш тестовый метод не будет вызван при запросе.