ピラミッドを開始したばかりで、ビューの読み込みに問題があります。ここで私のPHPソリューションのように、データベースからフェッチされた変数に基づいてビューをロードしたい: htaccessでurlを書き換える
これを実行できるスクリプトを作成しましたが、これは正しい方法ではないと確信しています。これを実際のサイトで使用すると、非常に複雑で面倒になると思います。誰かがこれを適切に説明するか、他の解決策を教えてもらえますか?
私の現在のスクリプト:
config.add_route('home', '/')
config.add_route('admin_home', '/admin')
config.add_route('admin_pages', '/admin/pages')
config.add_static_view(name='static', path='website:static')
config.add_route('view_loader', '/*url')
ビュー.py
class ViewLoader(object):
def __init__(self, request):
self.request = request
@view_config(route_name="view_loader", renderer="templates/view_loader.pt")
def view_loader(self):
request = self.request
url = "/%s" % request.matchdict["url"]
page = DBSession.query(Pages).filter_by(url=url).one()
return dict(title=page.title, include=page.template)
view_loader.pt
<!DOCTYPE html>
<html>
<body>
<metal:main use-macro="load: ${include}"></metal:main>
</body>
</html>
システムのアイデア:
管理者は、ランダムな URL を持つ cms でページを作成でき、テンプレートを選択する必要があります。システムはこれらのページを生成する必要があります。
- url = /random/random -> db でテンプレートを探す -> render template_1
- url = /random2/random2 -> db でテンプレートを探す -> render template_2
クラス/メソッドが呼び出された後にテンプレートをレンダリングして、どのテンプレートをレンダリングする必要があるかを判断したい