基于类的Listview挂起如何查询所有

时间:2013-12-16 22:26:41

标签: django listview django-class-based-views

我想让ListView工作。 我想要一个显示模型中所有对象的视图。像一个索引页面。

当我通过它的DetailView查找对象时,slug和页面正常工作 这个listview给了我错误:

  

在/ oferto / listview /

找不到页面(404)

ofertoj.views

class OfertoListView(ListView):
    model = Oferto

class OfertoHome(ListView):
    model = Oferto

    def get_context_data(self,**kwargs):
        context = Oferto.objects.all()
        return context

urls.py

    url(
    regex=r"^$",
    view = OfertoHome.as_view(),
    name ="oferto_home"
    ),

url(
regex=r"listview/$",
view=OfertoListView.as_view(),
name="oferto_listview"
),

models.py

class Oferto(models.Model):
    user = models.ForeignKey(User)

    name = models.CharField(max_length=150)
    description = models.TextField(max_length=3000)

    slug = AutoSlugField(('slug'), max_length=128, unique=True, populate_from=('name',))
    tags = tagging.fields.TagField()

    image = models.ImageField(upload_to='Ofertoj',blank=True, null=True)

    def get_absolute_url(self):
        return reverse('oferto_detail', kwargs={'slug': self.slug})

    def __unicode__(self):
        return self.name

    def get_tags(self):
        return Tag.objects.get_for_object(self) 

parent urls.py

    (r'^oferto/',include('ofertoj.urls')),

1 个答案:

答案 0 :(得分:0)

有一点是:

您正在使用context视图中的QuerySet替换oferto_home

def get_context_data(self,**kwargs):
    context = Oferto.objects.all()
    return context

应该是这样的:

def get_context_data(self,**kwargs):
    context = super(OfertoHome, self).get_context_data(**kwargs)
    return context

默认情况下,ListView应检索所有对象


您的urls.py是否已命名?如果没有,我相信,你的网址可能是

url(
regex=r"^listview/$",
view=OfertoListView.as_view(),
name="oferto_listview"
),

以上网址可在/listview/

获取

如果你想在appname前加上你可以创建一个url命名空间,或者明确地使用url中的oferta,如:

regex=r"^ofertta/listview/$",