【问题标题】:Django generic views with multiple parameters具有多个参数的 Django 通用视图
【发布时间】:2011-01-11 23:11:58
【问题描述】:

是否可以在 URL 映射中使用带有附加参数的通用视图 - 即我得到以下模型:

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')

还有这个琐碎的观点:

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 来识别路线,而区域 slug 只是为了塑造 url(例如routes/central-park/rat-rock)。我可以只使用通用视图来做同样的事情吗?

【问题讨论】:

    标签: python django django-generic-views


    【解决方案1】:

    当然,是这样的:

    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 设置为“路由”或在模板中使用“对象”。

    【讨论】:

    • 试过了——“object_detail() 得到了一个意外的关键字参数 'area'”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多