python - 如何在 eel python 中使用 Jinja2 模板?
问题描述
我想在 python 中创建一个桌面应用程序,所以我开始使用 eel 库来使用 html、css 和 javascript 轻松设计一个漂亮的 GUI 应用程序。
我有以下代码,其中我导入了 eel 模块并使用web/templates/index.html
文件启动应用程序以显示为主页,并且我创建了一个变量name
,我想在模板中使用它并显示它的值:
主文件
import eel
import pyautogui
name = 'Ajay'
eel.init('web')
eel.start(
'templates/index.html',
size=pyautogui.size(),
jinja_templates='web/templates'
)
项目的目录树
FirstProj
- main.py
- web/
- templates/
- index.html
索引.html
<html>
<head>
<script type="text/javascript" src="/eel.js"></script>
</head>
<body>
<h1> Hello {{name}}! </h1>
</body>
</html>
我发现使用 I 的jinja2_template
方法eel.btl
可以将值上下文值填充到模板中。但是如何渲染呢?我尝试了以下但没有奏效:
import eel, pyautogui
context = { 'name': 'Ajay' }
temp = eel.btl.jinja2_template('web/templates/index.html', context)
eel.init()
eel.start(temp, size=pyautogui.size(), jinja_templates='web/templates')
它向我显示了以下错误页面:
任何帮助将不胜感激。提前致谢!
解决方案
我发现安装eel[jinja2]
后的解决方案需要一个结构文件夹,例如
.
├── app.py
└── web
├── css
│ ├── bulma.min.css
│ └── main.css
├── js
│ └── main.js
└── templates
├── base.html
└── index.html
开始于app.py
eel.start(
'templates/index.html',
jinja_templates='templates'
)
在里面base.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Eel example</title>
<link rel="stylesheet" href="../css/main.css" />
<link rel="stylesheet" href="../css/bulma.min.css" />
<script type="text/javascript" src="/eel.js"></script>
</head>
<body>
{% block content %}
{% endblock %}
</body>
<script src="../js/main.js"></script>
</html>
并且在index.html
{% extends "base.html" %}
{% block content %}
<h1 class="title has-text-centered">Hello world!</h1>
{% endblock %}
推荐阅读
- testing - TestNG 和 DataProvider - 如何处理好的失败测试
- c# - 如何将 UserManager 注入 ASP.NET Core 2.0 中的另一个服务
- javascript - 查询 | Mousedown 和 Mouseup
- datepicker - 如何在 Bootstrap 3 datetimepicker 中禁用特定日期的特定时间?
- javascript - ReactJS 映射到 API
- c++ - SDL_TICKS_PASSED,似乎不起作用
- php - 比较对象集合
- html - 我怎样才能垂直对齐我的元素?
- php - NetBeans 等待连接 - netstat 显示已建立
- javascript - 如何在组件之外调度 redux 操作?