假设我有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对象并计算页数直到我上车。
有更好的方法吗?
答案 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>