【问题标题】:Can I use jinja2 without a framework?我可以在没有框架的情况下使用 jinja2 吗?
【发布时间】:2017-10-31 20:16:38
【问题描述】:

在 jinja2 方面,我完全是新手。是否需要构建框架才能使用jinja2?理想情况下,我会使用 html、css、js 和 jinja。我想是一个python文件。

【问题讨论】:

    标签: templates jinja2


    【解决方案1】:

    Jinja 旨在用于在 python 中进行模板化 - 如果您正在使用 js、html 和 css 编写基本的 Web 应用程序,您可以使用 es6 template strings 模板化 html 中的 js 值/变量。如果您正在使用 js 编写前端逻辑,那么这可能就是您正在寻找的。

    但是,如果您更熟悉 Python,并打算改用 Python 编写应用程序,那么您可能希望使用像 Flask 这样的基本框架(然后是的,您将使用 jinja2 )。

    【讨论】:

    • 感谢您的帮助!好吧,我的主要目标是为我们自己的微型站点生成器构建一个模板,它不允许构建,即。为什么我不能使用框架。我被告知要构建这个 jinja,但无法找到在没有框架的情况下使用它的方法。
    • 哦,有道理。那么我认为@cowbert 下面的回答会对你有所帮助
    【解决方案2】:

    您不需要使用带有 jinja2 的框架,只需要在渲染模板时发出 HTTP 的东西。

    以下是在没有框架的情况下提供网页的一般模式: h/t for the Python 2 version

    # import your jinja2 modules here
    from http.server import BaseHTTPRequestHandler, HTTPServer
    
    class MyHandler(BaseHTTPRequestHandler):
        def _set_headers(self):
            self.send_response(200)
            self.send_header('Content-type', 'text/html')
            self.end_headers()
    
        def do_GET(self): # handle GET request
            self._set_headers()
            self.wfile.write(# call Jinja2 renderer here)
    
    def run(server_class=HTTPServer, handler_class=MyHandler, port=80):
        server_address = ('', port)
        httpd = server_class(server_address, handler_class)
        print("Starting server...")
        httpd.serve_forever()
    
    if __name__ == '__main__':
        run()
    

    注意在本例中调用 Jinja2 的位置,在请求处理程序的 GET 方法中。

    【讨论】:

      猜你喜欢
      • 2020-11-13
      • 2011-10-03
      • 2023-03-14
      • 1970-01-01
      • 2022-07-19
      • 2017-12-31
      • 2019-01-31
      • 2016-08-11
      • 2021-08-10
      相关资源
      最近更新 更多