如何使用多组模板组织Flask应用程序的代码

Luk*_*404 9 python jinja2 flask

我正在使用Flask编写应用程序,我想为桌面和移动浏览器生成不同的代码.恕我直言,保持应用程序代码相同是一个好主意,并在模板级别推动在堆栈中提供不同内容的问题 - 所以它基本上成为为两个用例编写两组模板并找到方法的问题选择在每个请求中使用的正确的一个.我正在使用Flask的默认Jinja2模板引擎.

我应该提一下,我没有使用Flask的经验,而且我在编写代码时正在学习它 - 我也把它作为一个练习:)

您将使用什么机制来解决此问题并使源代码尽可能保持干净?

Luk*_*404 5

回复我自己:)

我最终使用了这个解决方案:

import flask
# patch flask.render_template()
_render_template = flask.render_template
def _my_render_template(*args, **kwargs):
    if detect_mobile_browser(flask.request.user_agent.string):
        args = ('m/' + args[0],) + args[1:]
    return _render_template(*args, **kwargs)
flask.render_template = _my_render_template
Run Code Online (Sandbox Code Playgroud)

到目前为止它似乎有效,我只是将“移动模板”放在一个m/子目录中。