谁能告诉我有关动态页面的信号?
我的用例如下:
我在主页面上有许多对象(图像)
当我点击图像时,我想重定向到关于这个对象的页面(我可以通过ajax获取有关对象的详细信息)
但我不想为每个对象创建页面.我宁愿像这样制作smth:mysite.com/images?image_id=254(有这样的页面的模型和模板)
可以吗?如果是这样,请告诉我在文档xx中查看的位置
这听起来像是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
方法.