将python变量链接到HTML脚本

时间:2013-03-21 10:11:23

标签: python html

我以前从来没有在这里写过一个问题,所以如果我不清楚自己在做什么的话,请光临我。

我编写了一个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被问题编号替换)。

2 个答案:

答案 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)