【问题标题】:Running a python script with HTML button使用 HTML 按钮运行 python 脚本
【发布时间】:2018-05-11 17:43:20
【问题描述】:

当按钮是 html 文件被点击时如何调用 python 脚本? 我正在尝试通过单击按钮来更改网站的语言。这是我到目前为止所做的,但是当我点击“找不到页面”和“当前 URL,foo,与这些中的任何一个都不匹配”按钮时出现错误。我做错了什么

login.html

<form action="/foo" method="post">
<input type="submit" name = "first_button" value="French">
<input type="submit" name = "second_button" value="Spanish">
</form>

views.py

from app import foo

def get_language_from_client(request):   
new_lang= foo()
if new_lang=="fr":
    client_lang="fr"
else:
    client_lang = translation.get_language_from_request(request)
print "client_lang:", client_lang
if "en" in client_lang:
    return 0
elif "nl" in client_lang:
    return 1
elif "fr" in client_lang:
    return 2
elif "pl" in client_lang:
    return 3
elif "ru" in client_lang:
    return 4
else:
    print "Unknown language code:", client_lang
    return 2

app.py

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def index():
    return render_template('login.html')

@app.route('/foo')
def foo():
    return "fr"

if __name__ == '__main__':
    app.run()

我的目录结构看起来像

scriboxapp
-templates
  -login.html
-views.py
-app.py

【问题讨论】:

    标签: python html


    【解决方案1】:

    我建议为此使用Flask

    这是您可以执行的操作的示例:

    index.html:

    <form action="/foo" method="POST">
        <input type="submit" value="French">
    </form>
    

    app.py:

    from flask import Flask, render_template
    
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        return render_template('index.html')
    
    @app.route('/foo', methods=['GET', 'POST'])
    def foo():
        '''execute whatever code you want when the button gets clicked here'''
        return
    
    if __name__ == '__main__':
        app.run()
    

    当您运行 app.py 文件并导航到运行 Flask 网络服务器的 URL(在本例中为 localhost)时,您将看到 index.html 文件。

    在上面的示例中,您可以看到包含值French 的按钮将执行您的/foo 路由。带有正确路由装饰器/foo 的函数是您可以执行所需代码的地方。

    要使其正常工作,您的目录结构应如下所示:

    - app
        - templates
            - index.html
        - app.py
    

    【讨论】:

    • 非常感谢您的快速回复。我不熟悉目录结构。我怎样才能访问它?
    • @SamraMemon 通过目录结构我的意思是你的项目所在的文件夹。创建一个名为app 的文件夹,然后在一个名为app.py 的文件和一个名为templates 的文件夹中创建一个。 index.html 进入templates
    • 我已经编辑了我的问题作为对您回答的回应。我不知道如何在 cmets 中编写代码。
    • @SamraMemon 抱歉,我忘了说明您的 foo 路由需要接受正确的 HTTP 请求。您可以查看 Flask 文档以了解将它们放在装饰器中的哪个位置:)
    • 你能给我一个小小的提示吗?我浏览了文档,但不幸的是没有任何效果。
    猜你喜欢
    • 2015-01-03
    • 1970-01-01
    • 2021-10-16
    • 2022-12-25
    • 2011-09-08
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    相关资源
    最近更新 更多