【问题标题】:Basics - HTML and Python Connection with bottle基础 - HTML 和 Python 与瓶子的连接
【发布时间】:2014-12-13 07:54:03
【问题描述】:

我是 Python 的新手。我知道 C,我一直在尝试弄清楚 Python,并且我成功了一点,我可以用它编写一些小程序。我也知道 HTML 基础知识,并用它做了一些基本的网站。

我有这两个任务。我需要做一个网站,用户可以发布一些带有一些附件的消息,可以评价、删除或过滤现有消息,并且用户还应该能够选择网站的外观。而且我只能使用“瓶子”和 Python 3.4 来做。

那么,这怎么可能连接这两种不同的语言,HTML 和 Python?我知道服务器、请求和响应关系是如何工作的,但我在互联网上找不到任何关于它的基本资料。如何使用 python 瓶做网站?我了解网站对 python 的需求,但如何使用它?我的意思是,在 HTML 上是否有任何导入,例如“import website.py”,我可以在我的 HTML 中提及 Python 文件以使用它,反之亦然。我需要学习的是如何连接python文件和html文件,以便我有一个内部使用一些python代码的网站?

请解释一下,就像和一个英语流利的 10 岁男孩说话一样,因为我在网上看到一些信息,比如满是代码,甚至无法理解这些瓶子代码是如何工作的。

非常感谢。

【问题讨论】:

    标签: python html bottle


    【解决方案1】:

    本质上,HTML 是文本。每次浏览器发出请求(例如对http://localhost:8080/loginwww.domain.com/route)时,某些服务器必须提供此html 文本文档。

    如果你的 HTML 永远不会改变(静态网站),那么你就不需要 Python。但是,如果您需要为新请求生成新的 HTML(例如,包括数据库中可能会随时间变化的值),那么 Python 程序可以帮助组合基本的 HTML 模板(想象普通的 html 与一些占位符对于变量)和新信息(例如插入变量值)并呈现新的 HTML 网站。

    Bottle 是一个 Python 库,它通过提供处理路由、会话等的便捷方法来增强基本 Python 功能。例如,如果您在名为 hello_template.tpl 的文件中有一个看起来像这样的模板(请注意更改 html->tpl ):

    hello_template.tpl

    <html>
    <head>
      <title>Hello World in Bottle</title>
    </head>
    <body>
        <h1>Hello {{name.title()}}!</h1>
    </body>
    </html>
    

    然后您可以使用变量 name 从您的 server.py 文件中呈现它:

    server.py

    from bottle import route, template, run
    
    @route('/hello')
    @route('/hello/<name>')
    def hello(name='World'):
        return template('hello_template', name=name)
    
    run(host='localhost', port=8080, debug=True)
    

    通过在控制台中运行:

    python server.py
    

    如果您随后转到http://localhost/alex:8080,bottle 服务器将读取模板hello_template.tpl,将其填入姓名 Alex 并将其返回给您。

    【讨论】:

    • 非常感谢。但我的问题是如何一起使用它们?我了解逻辑但对语法一无所知,我该如何使用例如“mysite.html”文件与“mycode.py”在一起?
    • 是的,您将拥有这两个文件(将 html 重命名为 tpl),然后运行 ​​python mycode.py。然后你用浏览器去 localhost:8080 你会看到这个页面。查看我的更新并告诉我您是否仍然缺少某些东西。
    • 如果我理解正确,当我转到http://localhost/name 时,它会触发 python 文件,它会读取名称并将其放入模板文件中,如您所说,并显示填充的模板与name。对于@route('/hello/&lt;name&gt;'),我们说无论用户在http://localhost/ 之后写什么都将被接受为name,但我们在python 中定义hello(name='World'),我们的name 如何更改定义中的world 以及会发生什么如果我们不写World 或那里的任何东西?
    • 是的,这是一个瓶子处理路线的例子。它将向浏览器返回一个 HMTL 文件,即使用变量名呈现的模板。 name='World' 在某种程度上是可选的,实际上是全局中的一个细节(如果未给出名称,则指定函数 hello 的默认名称值)。如果我只输入name,那也是一样的。
    • 我知道了,但是如果我想在 HTML 正文中放入消息表单怎么办?我该如何表达它将成为 Python 将填充它的区域?
    猜你喜欢
    • 2019-10-04
    • 2011-03-17
    • 2020-11-19
    • 1970-01-01
    • 2021-02-02
    • 1970-01-01
    • 2013-07-24
    • 2015-12-02
    • 1970-01-01
    相关资源
    最近更新 更多