Ошибка «NameError: имя« ключ »не определена» Невозможно отобразить »ошибка с использованием бутылки - PullRequest
0 голосов
/ 14 декабря 2018

x.py файл:

from bottle import request, template,route,run,post

@route('/')
def index():
    return template('val.html')

@post('/result')
def result():
    result=request.forms
    print(result)       #Unable to print 

    return template("result",result = result)


if __name__ == '__main__':
    run(host='localhost',port=8080,debug='True',reloader='True')

val.html файл:

<!DOCTYPE html>
<html>
<body>

<form action="http://localhost:8080/result" method = "POST">
Select a time:
<input type="time" name="usr_time">
<br> <br>
<input type="checkbox" name="A" value="A is on" >A </input>
<br>
<input type="checkbox" name="B" value="B is on" >B </input>
<br>
<input type="checkbox" name="C" value="C is on" >C </input>
<br><br>
<input type="submit"> </input>
</form>


</body>
</html>

файл result.html:

<!doctype html>
<html>
   <body>

      <table border = 1>
         {% for key, value in result.items() %}

            <tr>
               <th> {{ key }} </th>
               <td> {{ value }} </td>
            </tr>

         {% endfor %}
      </table>

   </body>
</html>

html-файлы находятся внутрипапка views.

1) Я пытаюсь отобразить кнопки, на которые нажал пользователь, но я получаю сообщение об ошибке - «NameError: имя 'ключ' не определено. Невозможно отобразить".

2) Кроме того, я не могу напечатать результат.Это хорошо работает на колбу, если я использую, result= request.form, а затем print(result)Это печатает словарь на колбе.Но не работает, используя бутылку.Когда я использовал type(result), он говорит = <class 'bottle.FormsDict'>.пожалуйста, помогите.

1 Ответ

0 голосов
/ 14 декабря 2018

Согласно https://bottlepy.org/docs/0.11/stpl.html, "Символ% распознается только в том случае, если он является первым непробельным символом в строке."
Таким образом, его следует записать, как показано ниже, чтобы оставаться в режиме Python:

% for key, value in result.items()
...
% end
...