这是烧瓶文件。
from flask import render_template
from app import app
@app.route('/')
@app.route('/index')
def index():
user = {'nickname': 'Miguel'} # fake user
return render_template('index.html',title='Home',user=user)
这是帕格文件:
doctype html
html(lang="en")
head
title pageTitle
if title
title {{ title }} - microblog
else if !title
title Welcome to microblog1
else
title Welcome to microblog2
body
h1 Hello, {{ user.nickname }}!
if {{ user.nickname }} == "Miguel"
h1 Miguel
这是index.html在使用Prepros转换后的样子:
<!DOCTYPE html>
<html lang="en">
<head>
<title>pageTitle</title>
<title>Welcome to microblog1</title>
</head>
<body>
<h1>Hello, {{ user.nickname }}!</h1>
<h1>{{ user.nickname }}</h1>
<h1># user.nickname</h1>
</body>
</html>
我可以使用我的PUG文件从FLASK获取动态内容。 所以脚本中的以下内容有效:
h1 Hello, {{ user.nickname }}!
输出是“你好,Miguel!”
但这部分不起作用。
if {{ user.nickname }} == "Miguel"
h1 Miguel
我收到语法错误:意外的令牌。所以我可以从Flask获得名称,但我不能在if语句中使用它? 我不确定我做错了什么或是否只是不支持。 顺便说一句,我正在使用Prepros(提供错误)将我的PUG文件转换为HTML。
可能与之相关的一点是,当我通过Prepros转换我的文件时,我并没有真正得到我期望的结果。
这是来自PUG文件:
title pageTitle
if title
h1 {{ title }}
else if !title
title Welcome to microblog1
在我希望的html中:
<title>pageTitle</title>
{% if title %}
<title>{{ title }}</title>
{% else if !title %}
<title> Welcome to microblog1
但我最终得到了:
<title>pageTitle</title>
<title>Welcome to microblog1</title>
就好像Prepros在转换为HTML之前回答了IF语句。这意味着代码不是动态的。我是PUG和FLASK的新手,所以我不确定在哪里尝试找到解决方案。
答案 0 :(得分:1)
谢谢你们。找到了解决方案。
| {% if user.nickname == 'Miguels'%}
| h1 Miguel
| {% endif %}
然后在HTML中出现:
{% if user.nickname == 'Miguels'%}
h1 Miguel
{% endif %}
这也解决了转换中回答IF语句的问题。
@ CS01 谢谢,那篇文章是我找到解决方案的地方。 “ - ”不起作用。
@Shea Belsky 谢谢。我知道它存在,因为它用“打印”它:h1 user.nickname
答案 1 :(得分:0)
双花括号{{ }}
无效Pug语法。 (我认为它是另一个HTML预处理器的一部分,我不记得我头脑中的东西)。在Pug中,以英镑符号#{}
为前缀的两个花括号表示可以运行以返回某些内容的代码。你的源pug文件看起来像这样,然后:
doctype html
html(lang="en")
head
title pageTitle
if title
title #{ title } - microblog
else if !title
title Welcome to microblog1
else
title Welcome to microblog2
body
h1 Hello, #{ user.nickname }!
if #{ user.nickname } == "Miguel"
h1 Miguel
在循环或条件内指示变量时,不需要使用该语法。你可以只做if variable === "something"
,这应该可以正常工作。
在您的示例中,您将if语句更改为不具有任何花括号。
if user.nickname == "Miguel"
h1 Miguel
如果您总是要为用户的昵称使用h1
,则可以直接使用这些花括号嵌入它。
h1 #{user.nickname}
最后,您的代码中有两个title
元素,这就是它出现两次的原因。您可以取出最顶层的一个(title pageTitle
),以便只显示一个内容,其中内容取决于传递给处理器的有效title
变量。
答案 2 :(得分:0)
我认为你正在寻找def getSeatNum(jid):
statement = '''SELECT tk_id, tk_seat_number FROM tickets
WHERE tk_journey = '%s'
ORDER BY tk_id DESC LIMIT 1;'''
cursor.execute(statement, jid)
row = cursor.fetchone()
seat_num = row[0]
return(seat_num)
seat_no = getSeatNum(jid)
角色。
-
将是
if {{ user.nickname }} == "Miguel"
h1 Miguel
来源:https://github.com/matannoam/pypugjs#using-templatetags-and-any-feature-of-the-compiled-to-language
- if user.nickname == 'Miguel'
h1 Miguel