Tôi có 3 bố cục trang sản phẩm khác nhau mà tôi muốn hiển thị phụ thuộc vào thông tin có sẵn về sản phẩm. Sử dụng traversal Tôi có một lớp gọi là ProductFinder
lấy tất cả thông tin. Ví dụ: người dùng truy cập vào miền/green/small và ProductFinder
sẽ liệt kê tất cả các sản phẩm từ DB của tôi có màu xanh lá cây và nhỏ. Danh sách này là self.products trong lớp ProductFinder
. Trong __init__.py
của tôi, tôi đã thêm dòng:Trong Kim tự tháp, làm cách nào tôi có thể sử dụng trình kết xuất đồ họa khác dựa trên nội dung của ngữ cảnh?
config.add_view('app.views.products', name='')
trong products.py tôi có:
from pyramid.view import view_config
@view_config(context='app.models.ProductFinder', renderer='productpage.mako')
def products(context, request):
return dict(page=context)
Dựa trên những gì trong context.products dù tôi muốn làm một mako khác nhau. Trong giá treo tường, tôi đã thực hiện một cái gì đó như:
def products(context, request):
if len(context.products) == 1:
return render("oneproduct.mako")
elif len(context.product) == 2:
return render("twoproducts.mako")
Vậy làm cách nào tôi có thể hiển thị mẫu khác dựa trên nội dung của ngữ cảnh?
Dòng đầu tiên của bạn ở đó "config.add_view ('app.views.products', name = '')" rất có thể là * không * những gì bạn muốn. @view_config là cái duy nhất tôi nghĩ bạn thực sự quan tâm ở đây. –