0

我编写了一个 Python 3.2 脚本,从 SQLite 3 数据库中提取了 18 个随机问题中的 10 个。该脚本工作正常,但我现在想使用 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 被问题编号替换)。

4

2 回答 2

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>
    """)

更新:现在为最后几行打开三重双引号。

于 2013-03-21T10:27:00.750 回答
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)
于 2013-03-21T10:49:23.207 回答