我使用Flask根據我在網上找到的教程設置了一個應用程序。我遇到的問題是迄今爲止,似乎我將不得不爲每個視圖/路線編寫大量代碼,所以我正在試圖設計一個更好的系統,但我認爲我挖掘到了一個洞,在那裏我在真正測試每一步之前寫了太多的代碼,因爲我不熟悉框架im kindof lost。爲Flask設置通用視圖類
所以我想要的是一個基礎視圖類,將提取一些樣板材料。這是我迄今的嘗試。試圖從基本視點
from app.BaseView import BaseView
from app import app
class HelloView(BaseView):
@app.route('/')
def respond(self):
self.render_tmpl('hello.html')
繼承我這背後的推理
import jinja2
from jinja2 import Environment as Jinja2Environment
from webassets import Environment as AssetsEnvironment
from webassets.loaders import YAMLLoader
from webassets.ext.jinja2 import AssetsExtension
from flask import render_template
from app import app
class BaseView(object):
def __init__(self):
"init"
def get_jinja_env(self):
jinja_env = Jinja2Environment(loader=jinja2.FileSystemLoader('templates/'), extensions=[AssetsExtension])
return jinja_env
def get_asset_env(self):
asset_loader = webassets.YAMLLoader('conf/assets.yml')
asset_env = asset_loader.load_environment()
bundles = asset_loader.load_bundles()
[asset_env.register(name, bundle) for name, bundle in bundles.iteritems()]
return asset_env
def render_tmpl(self, tmpl_file, **context):
"Renders Jinja Template"
jinja_env = self.get_jinja_env
jinja_env.assets_environment = self.get_asset_env
template = jinja_env.get_template(tmpl_file)
return template.render(context)
類是後來我打算延長一些神社的功能,如高速緩存,並有一些數據可用於每個視圖和模板。
非常感謝。 – BillPull