python3.x - Python flask 的 jinja2 自定义过滤器的问题,求助
本文介绍了python3.x - Python flask 的 jinja2 自定义过滤器的问题,求助的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
我看到网上有jinja2 自定义模板引擎的
app = Flask(__name__)
def json_dumps(dict):
result = json.dumps(dict)
return result
def typeFilter(arg):
result = type(arg)
return result
env = app.jinja_env
env.filters['json_dumps'] = json_dumps
env.filters['typeFilter'] = typeFilter
这样在前端就可以调用这个自动以的过滤器了
但是我是根据flasky的方式来return app的
def create_app():
app = Flask(__name__)
app.config.from_object(ListConfig)
bootstrap.init_app(app)
login_manager.init_app(app)
mail.init_app(app)
db.init_app(app)
csrf.init_app(app)
from .auth import auth as auth_blueprint
app.register_blueprint(auth_blueprint, url_prefix='/auth')
from .main import main as main_blueprint
app.register_blueprint(main_blueprint)
return app
现在就一脸懵逼不知道怎么简单的管理这个模板引擎
我把上面jinja2的内容全部放到这个def里面是可以用的。。但是怎么像这个单独return之后,我from xxx import xxx的时候用?
解决方案
def create_app():
app = Flask(__name__)
app.config.from_object(ListConfig)
bootstrap.init_app(app)
login_manager.init_app(app)
mail.init_app(app)
db.init_app(app)
csrf.init_app(app)
from .auth import auth as auth_blueprint
app.register_blueprint(auth_blueprint, url_prefix='/auth')
from .main import main as main_blueprint
app.register_blueprint(main_blueprint)
#: 注册自定义过滤器
env = app.jinja_env
env.filters['json_dumps'] = json_dumps
env.filters['typeFilter'] = typeFilter
return app
可以这样管理(未必是最优雅的)
#: filters.py
def json_dumps(dict):
result = json.dumps(dict)
return result
def typeFilter(arg):
result = type(arg)
return result
def a(items):
return items
filters = [
json_dumps,
typeFilter,
a
]
#: app.py
from filters import filters
def create_app():
app = Flask(__name__)
app.config.from_object(ListConfig)
bootstrap.init_app(app)
login_manager.init_app(app)
mail.init_app(app)
db.init_app(app)
csrf.init_app(app)
from .auth import auth as auth_blueprint
app.register_blueprint(auth_blueprint, url_prefix='/auth')
from .main import main as main_blueprint
app.register_blueprint(main_blueprint)
#: 注册自定义过滤器
for func in filters:
app.jinja_env_filter[func.__name__] = func
return app
这篇关于python3.x - Python flask 的 jinja2 自定义过滤器的问题,求助的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文