python - 执行python函数并从html中读取变量

标签 python html

首先,我是编程新手,对 python 有相对基本的了解,对 html 的了解一般。

利用我在 Python 中的知识,我正在尝试创建一个基本的策略游戏,有点像帝国时代或命令与征服之类的游戏,基于收集资源并使用它来构建东西,除了使用简单的文本或单击按钮类型的界面。我可以做一个文本界面,但有点无聊,我想用一些图片。我有一个关于 tkinter 的 1 小时讲座,但我尝试并未能从中远程“使用”任何东西。我能做的就是制作看起来不错的 html 页面,这将很好地满足我的目的。

我想知道是否有一种简单的方法可以通过 html 页面执行 python 函数并调用/显示 python 变量? python 函数执行所有逻辑并呈现代表当前资源水平、生产、存储能力、建筑物水平等的变量。在最基本的水平上,我需要的是一种显示这些变量的方式,并具有执行功能的按钮也就是说,升级一座建筑,它会重新计算产量等等,并返回一组新的值(value)。

举个简单的例子:

<p> Wheat production: *python integer representing production*</p>
<button type="button" onclick="*execute python variable*">Upgrade Wheat</button>

我想,还需要以某种方式更新在 html 页面上更改的变量。所以按钮执行了一个函数来升级小麦产量,python 现在有一个小麦产量变量的新值,这需要在页面上更新,无论是自动的,还是通过其他一些方法。我想最简单的方法是按下按钮也可以重新加载页面,但这似乎有点笨拙。

有人知道这样做的简单方法吗?或者也许是一个可以帮助我的 python 库?

最佳答案

是的,有一种方法可以做到这一点。

有两种方法可以做到这一点。一种是在服务器上完成所有工作,另一种方法是使用 Javascript。

第一种方法是:编写一个生成 HTML 的 python 脚本。如果你使用 Django,你会得到很多工作,但你也会得到很多你不想要的东西。 Django 确实有一个内置的模板语言。 Django 超出了这个答案的范围。您将完全按照上述描述进行操作;模板的示例可能是 <p> Wheat production: {{wheat_production}}</p> - 你的 python 代码将设置一个字典 mydict={"wheat_production":10}然后您将模板文件的名称和字典传递给一个函数,该函数将吐出您的页面。如果您还没有学习 HTML 表单,您还必须了解它。

另一种方法是使用 Ajax - Javascript,当您的页面显示时(可能还有单击按钮时,或定期)将发送/接收一些数据以允许您更新页面。我建议研究 JQuery 来为您做一些提升。这意味着您可以更新页面的某些部分而无需重新加载整个页面。您仍然需要在服务器上编写一些代码来与数据库对话,并将输出(通常为 JSON)发送回客户端。

写这类东西时,请确保您的所有安全都在服务器端,不要相信用户告诉您的任何事情。例如,如果您将金币数量存储在表单的一个字段中,那么某人需要大约 10 秒的时间才能给自己想要多少金币。类似地,如果一个玩家可以以 20 金币的价格出售一颗钻石,请确保他们在给他们金币之前拥有钻石 - 您不希望最终玩家拥有 1,000,000 金币和负 1000 颗钻石。 Javascript 是 100% 不安全的,Javascript 能做的,玩家也能做。

关于python - 执行python函数并从html中读取变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24051361/

相关文章:

javascript - 文本字段的背景颜色 :focus

html - 样式输入类型复选框

javascript - 在 Windows 任务栏中(纯 JavaScript)等元素上交换位置

python - 在python中更改数组的数据类型

python - 在Python中重写C++位移运算符

python - 如何使用 setup.cfg 设置 Python 包配置文件

javascript - 如何将我的浏览器上播放的实时视频流式传输到另一个用户的浏览器?

javascript - jQuery UI 可拖动 : Mouse moves faster than draggable div

python - 尝试迭代并加入 Pandas DFs : AttributeError: 'Series' object has no attribute 'join'

python - Python UnicodeDecodeError 最佳实践