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