Контекст Django TemplateView не отображается в шаблоне - PullRequest
2 голосов
/ 20 марта 2019

Я знаю, что, возможно, об этом спрашивали миллион раз, но я искал вечно и не мог найти ответ. Я пытаюсь создать несколько выпадающих списков для использования в качестве поискового фильтра на моей странице индекса. Я загрузил модели с данными, но когда я пытаюсь отобразить данные в шаблоне, я не вижу, что находится в модели. Вот мой код:

views.py

from django.views.generic import TemplateView
from .models import LengthRange, Hull


class IndexView(TemplateView):
    template_name = 'index.html'

    def get_context_data(self, **kwargs):
        context = super(IndexView, self).get_context_data(**kwargs)
        context['length_ranges'] = LengthRange.objects.all()
        context['hull_types'] = Hull.objects.all()
        return context

urls.py

from django.urls import path
from django.views.generic import TemplateView

urlpatterns = [
    path('', TemplateView.as_view(template_name='index.html'), name='index'),
]

и мой фрагмент из index.html :

    <h2 class="about-item__text">
A boat with a length of
       <select>
           <option value="*" selected>any size</option>
            {% for length in length_ranges %}
                                        <option value="{{ length.pk }}">{{ length.range }}</option>
                                    {% endfor %}
                                </select>
                                , with hull type of
                                <select>
                                    <option value="*" selected>any</option>
                                    {% for hull in hull_types %}
                                        <option value="{{ hull.pk }}">{{ hull.type }}</option>
                                    {% endfor %}
                                </select>

Прошло очень много времени с тех пор, как я работал в Джанго, но это должно было быть относительно легко. Что мне здесь не хватает?

1 Ответ

3 голосов
/ 20 марта 2019

Вы используете TemplateView в своем шаблоне URL - вам следует импортировать свое представление и использовать его вместо этого.

from myapp.views import IndexView

urlpatterns = [
    path('', IndexView.as_view(), name='index'),
]
...