0

SQLite 3 データベースから抽出した 18 のリストから 10 のランダムな質問を選択する Python 3.2 スクリプトを作成しました。スクリプトは正常に動作しますが、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>
    """)

明確にするために、「質問 n」タイプのものを、SQLite 3 データベースから取得した質問に置き換えたいと思います。質問は QASKEDN 変数にロードされます (N は質問番号に置き換えられます)。

4

2 に答える 2

0

Python のテンプレート言語であるJinjaをチェックしてみてください。

あなたの場合、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 に答える
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 に答える