当前位置:  开发笔记 > 编程语言 > 正文

动态wagtail页面

如何解决《动态wagtail页面》经验,为你挑选了1个好方法。

谁能告诉我有关动态页面的信号?

我的用例如下:

    我在主页面上有许多对象(图像)

    当我点击图像时,我想重定向到关于这个对象的页面(我可以通过ajax获取有关对象的详细信息)

    但我不想为每个对象创建页面.我宁愿像这样制作smth:mysite.com/images?image_id=254(有这样的页面的模型和模板)

可以吗?如果是这样,请告诉我在文档xx中查看的位置



1> gasman..:

这听起来像是RoutablePageMixin的理想用法,它允许您使用类似Django的URL模式为一个页面定义多个视图.在这种情况下,您可以定义两个视图,一个用于主页面(在URL处/images/),另一个用于特定对象(在URL处/images/123/):

from django.shortcuts import get_object_or_404, render
from wagtail.contrib.wagtailroutablepage.models import RoutablePageMixin, route

class ProductListingPage(RoutablePageMixin, Page):

    @route(r'^$')
    def index_view(self, request):
        # render the index view
        return render(request, 'products/index.html', {
            'page': self,
        })

    @route(r'^(\d+)/$')
    def product_view(self, request, product_id):
        # render the view for a single item
        product = get_object_or_404(Product, id=product_id)
        return render(request, 'products/product.html', {
            'product': product,
            'page': self,
        })

如果你想要更低级别,你可以尝试覆盖页面的serve方法 - 这是RoutablePageMixin内部工作的方式.覆盖serve足以支持mysite.com/images?image_id=254等网址:

class ProductListingPage(Page):
    def serve(self, request):
        product_id = request.GET.get('image_id', None)
        if product_id is None:
            return render(request, 'products/index.html', {
                'page': self,
            })
        else:
            product = get_object_or_404(Product, id=product_id)
            return render(request, 'products/product.html', {
                'product': product,
                'page': self,
            })

要获得mysite.com/images/123/形式的更好的URL,您也可以覆盖该route方法.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有