2017-07-31 22 views
0

的ListView Django的不是工作,但基于功能视图当我使用下面的代码使用基于功能视图中工作

从django.views进口查看 从django.views.generic进口TemplateView,ListView控件

from .models import Restaurant 
def restaurant_listview(request): 
    template = 'restaurants/restaurants_list.html' 
    context = { 
    "queryset" : Restaurant.objects.order_by('-updated') 
    } 
    return render (request, template, context) 

它正在与该URL的文件保存如下:

from django.conf.urls import url 
from django.contrib import admin 
from restaurants import views 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^restaurants/$', views.restaurant_listview), 
] 

但是,当我试图做同样的事情与基于类的意见它不工作只以下部分似乎不工作:

<ul> 
    {% for obj in queryset %} 
    <li>{{obj.name}}, {{obj.location}}, {{obj.category}}, {{obj.timestamp}}</li> 
    {% endfor %} 
</ul> 

以下部分工作正常:

{% extends 'base.html' %} 
{% block title %} 
Restaurants List {{ block.super }} 
{% endblock %} 
{% block content %} 
<h1>Restaurants</h1> 

基于类视图我views.py是:

class RestaurantListView(ListView): 
    queryset = Restaurant.objects.all() 
    template_name = 'restaurants/restaurants_list.html' 

和urls.py是:

url(r'^restaurants$', RestaurantListView.as_view(), name='Home') 

P.S.我下面这个指南:https://www.youtube.com/watch?v=yDv5FIAeyoY&t=25471s

回答

1

有关列表视图,你应当将模板更改为:

{% for obj in restaurant_list %} 

或者,如果你真的想在模板中使用变量queryset,然后设置context_object_name

class RestaurantListView(ListView): 
    queryset = Restaurant.objects.all() 
    template_name = 'restaurants/restaurants_list.html' 
    context_object_name = 'queryset' 
+0

谢谢!这工作。 –

相关问题