我知道这个问题可能已经被问了一百万遍了,但是我一直搜寻,却找不到答案。我正在尝试创建多个选择下拉列表,以用作索引页面上的搜索过滤器。我已经为模型加载了数据,但是当我尝试在模板上渲染数据时,我看不到模型中的内容。这是我的代码:

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>


自从我在Django工作以来已经很长时间了,但这应该相对容易。我在这里想念什么?

最佳答案

您在URL模式中使用TemplateView-您应该导入视图并改为使用它。

from myapp.views import IndexView

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

10-05 22:09