我以前从来没有在这里写过一个问题,所以如果我不清楚自己在做什么的话,请光临我。
我编写了一个Python 3.2脚本,从18个列表中选择10个随机问题,从SQLite 3数据库中提取它们。该脚本工作正常,但我现在想要使用HTML呈现这一点 - 我知道如何用HTML制作问题框,但不知道如何在“问题1”占位符的位置打印问题。
以下HTML代码:
def PrintGame():
print( """
<html>
<div id = "textbody">
<h2>Quiz</h2>
<form method="post" action="quiz.cgi">
<table border="0">
<tr>
<td>Question 1:</td>
<td><input type="text" name="A1"/></td>
</tr>
<tr>
<td>Question 2:</td>
<td><input type="text" name="A2"/></td>
</tr>
<tr>
<td>Question 3:</td>
<td><input type="text" name="A3"/></td>
</tr>
<tr>
<td>Question 4:</td>
<td><input type="text" name="A4"/></td>
</tr>
<tr>
<td>Question 5:</td>
<td><input type="text" name="A5"/></td>
</tr>
<tr>
<td>Question 6:</td>
<td><input type="text" name="A6"/></td>
</tr>
<tr>
<td>Question 7:</td>
<td><input type="text" name="A7"/></td>
</tr>
<tr>
<td>Question 8:</td>
<td><input type="text" name="A8"/></td>
</tr>
<tr>
<td>Question 9:</td>
<td><input type="text" name="A9"/></td>
</tr>
<tr>
<td>Question 10:</td>
<td><input type="text" name="A10"/></td>
</tr>
<tr>
<td><input type="submit" value="Submit Answers"></td>
</tr>
</table>
</form>
</div>
</body>
</html>
""")
为了澄清,我想用SQLite 3数据库提取的问题替换“问题n”类型的东西。问题被加载到QASKEDN变量中(其中N被问题编号替换)。
答案 0 :(得分:0)
听起来你只想要字符串格式化,但使用灵活的格式字符串/变量。
我没有检查过,但也许是这样的事情?
def PrintGame():
htmlquestions = []
for question in QASKEDN:
htmlquestions.append("""
<tr>
<td>{} :</td>
<td><input type="text" name="A1"/></td>
</tr>""".format(question))
html = ("""
<html>
<div id = "textbody">
<h2>Quiz</h2>
<form method="post" action="quiz.cgi">
<table border="0">"""
+ "".join(htmlquestions) +
""" </table>
</form>
</div>
</body>
</html>
""")
更新:现在打开最后一行的三重双引号。
答案 1 :(得分:0)
您可能需要查看Jinja - python的模板语言。
在您的情况下,您的Jinja模板应该类似于
template_string = """
<html>
...
{% for question, name in questions %}
<tr>
<td>{{question}}</td>
<td><input type="text" name="{{name}}"/></td>
</tr>
{% endfor %}
...
</html>
"""
然后从代码中加载模板字符串并调用渲染函数将数据传递给它(在这种情况下是包含问题和名称的元组列表)
question_list = [("Q1", "name1"), ("Q2", "name2"), ...]
template = Template(template_string)
template.render(questions=questions_list)