具有多个参数的 Django 通用视图

发布于 2024-08-19 13:49:32 字数 839 浏览 5 评论 0原文

是否可以在 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)。我可以只使用通用视图做同样的事情吗?

Is it possible to use a generic view with additional parameters in the URL mapping - i.e. I got the following model:

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

This URL-Mapping:

url(r'^(?P<area>[-\w]+)/(?P<slug>[-\w]+)/

And this trivial 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})

As you can see, I'm actually identifying the route just by the route's slug and the area slug is just to shape the url (e.g. routes/central-park/rat-rock). Can I do the same just using a generic view?

,'routes.views.route_details', name='route_details')

And this trivial view:

As you can see, I'm actually identifying the route just by the route's slug and the area slug is just to shape the url (e.g. routes/central-park/rat-rock). Can I do the same just using a generic view?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

亢潮 2024-08-26 13:49:32

当然,像这样的东西:

url(r'^(?P<area>[-\w]+)/(?P<slug>[-\w]+)/

应该可以工作。

请务必将 template_object_name 设置为“route”或在模板中使用“object”。

, 'django.views.generic.list_detail.object_detail', {'queryset': Route.objects.all()} name='route_details')

应该可以工作。

请务必将 template_object_name 设置为“route”或在模板中使用“object”。

Sure, something like this:

url(r'^(?P<area>[-\w]+)/(?P<slug>[-\w]+)/

Should just work.

Be sure to either set template_object_name to "route" or use "object" in template.

, 'django.views.generic.list_detail.object_detail', {'queryset': Route.objects.all()} name='route_details')

Should just work.

Be sure to either set template_object_name to "route" or use "object" in template.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文