直接链接到ListView

时间:2016-11-24 11:45:11

标签: django

假设我有ListView,如下所示:

class CarsListView(ListView):
    model = Car
    paginate_by = 5

和模型Car

class Car(models.Model):
    created = models.DateTimeField()
    brand = models.CharField(max_length=30)

    class Meta:
       ordering = ("created",)

CarsListView正常显示created订购的所有汽车。到现在为止还挺好。

我想添加一个视图,将特定汽车的传入请求重定向到正确页面上的DetailView,而不是为每辆汽车创建CarsListView

class CarsRedirectView(RedirectView):
   def get_redirect_url(self, *args, **kwargs):
       car = Car.objects.get(pk=kwargs["pk"])
       # stuck here
       return "hmm?"

我真正需要知道的是汽车的哪个页面。一种方法是获取所有Car对象并计算页数直到我上车。

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

一种方法是: - 1)使您的汽车网址动态化(使用正则表达式将汽车的ID作为参数传递给视图。)

url(r'^car/(?P<car_id>[0-9]+)/$', 'your_app.views.car_detail', name='detail'),

2)处理这样的视图: -

def car_detail(request, car_id):
    car = Car.objects.get(pk=car_id)

在这里,您可以使用上下文将car对象传递给模板以显示详细信息: -

    context = {"car":car}
    return render(request, "details.html", context)

3)现在在你的模板&#34; details.html&#34;你可以用这种方式访问​​它或它的属性

<h1>Car Details</h1>
<h3>{{ car.property }}</h3>