Skip to main content
 首页 » 编程设计

python之具有多个参数的 Django 通用 View

2025年05月04日22pengyingh

是否可以在 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”。