【问题标题】:How to organize code for a Flask application with multiple set of templates如何使用多组模板组织 Flask 应用程序的代码
【发布时间】:2011-11-01 00:34:19
【问题描述】:

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

我应该提一下,我没有使用 Flask 的经验,我在编写代码时正在学习如何通过它 - 我也将其作为练习:)

你会使用什么机制来解决这个问题并尽可能保持源代码干净?

【问题讨论】:

    标签: python flask jinja2


    【解决方案1】:

    回复我自己:)

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

    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
    

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

    【讨论】:

    【解决方案2】:

    我想给你指出一个可能有些不同的方向。

    很多设计师和开发人员(包括我在内)并不认为网站设计的未来在于将 模板 分开,而是拥有一个动态响应其环境的模板。也就是说,它以最适合给定显示的方式重新排列其元素。

    它被称为responsive design。我知道这可能不是您一直在寻找的解决方案,但它可能会变得更好。

    【讨论】:

    • 您的建议从广义上讲是一个很好的建议,但不能回答这个具体问题。我想拥有一组模板,或多或少的“纯内容”,并使用 CSS3 进行所有样式设置和改组,但目前拥有两组模板更容易供我们管理。这将成为我们客户的网络应用程序,每个页面或多或少都有不同的模板......对于我们这些 CSS 无知的人来说太多了!
    • 确实如此。我只是想让你知道,因为这听起来很像你需要的。
    • 是的,一个愿意为食物工作的(好)设计师 :) 说真的,谢谢,我已在我们的 NOTES.txt 中为您的链接添加了书签。正如我所说,我希望有一天能到达那里。一个好主意可能是从桌面浏览器的(更简单的)固定宽度布局开始,并使用移动版本开始构建最终将成为唯一的流体布局。但我们偏离了手头的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    相关资源
    最近更新 更多