是否可以在 URL 映射中使用带有附加参数的通用 View - 即我得到以下模型:
class Route(models.Model):
area = models.ForeignKey(Area)
slug = models.SlugField(null=True,blank=True)
@models.permalink
def get_absolute_url(self):
return ('route_details', (), {'area': self.area.slug,
'slug': self.slug})
这个 URL 映射:
url(r'^(?P<area>[-\w]+)/(?P<slug>[-\w]+)/$','routes.views.route_details',
name='route_details')
这个琐碎的 View :
def route_details(self, area, slug):
route = get_object_or_404(Route, slug=slug)
return render_to_response("routes/route_details.html", {'route': route})
如您所见,我实际上只是通过路线的 slug 来识别路线,而 area slug 只是为了塑造 url(例如 routes/central-park/rat-rock)。我可以只使用通用 View 来做同样的事情吗?
请您参考如下方法:
当然,像这样:
url(r'^(?P<area>[-\w]+)/(?P<slug>[-\w]+)/$',
'django.views.generic.list_detail.object_detail',
{'queryset': Route.objects.all()}
name='route_details')
应该可以正常工作。
请务必将 template_object_name 设置为“route”或在模板中使用“object”。
