Програмно создан словарь словарей :
from flask import Flask, jsonify,abort,render_template,request,redirect,url_for
app = Flask(__name__)
tasks = [
{
'id': 1,
'title': 'Buy groceries',
'description': 'Milk, ,Pizza,,Cheese,Fruit, Tylenol',
'done': False
},
{
'id': 2,
'title': 'Learn Python',
'description': 'Need to find a good Python tutorial on the web',
'done': False
}
]
у каждого элемента есть id ,по этому id на другой штмл странице создается поиск:
<html>
<head>
<title>Search page</title>
</head>
<body>
<div id="container">
<div class="title">
<h1>GET request with Flask</h1>
</div>
<form method="GET" action="{{ url_for('get_task',task_id=TaskID) }}">
<label for="TaskID">Please enter Task ID:</label>
<input type="text" name="TaskID" value="0"/><br />
<input type="submit">
</form>
</div>
</div>
</body>
</html>
тоесть в зависимости от введенного Id , перенаправить на страницу с заданием
@app.route('/tasks/<int:task_id>', methods=['GET'])
def get_task(task_id=None):
if(task_id!=None):
task_id=int(task_id)
task = filter(lambda t: t['id'] == task_id, tasks)
if len(task) == 0:
abort(404)
return jsonify({'task': task[0]})
else:return jsonify({'tasks': tasks})
Ну и как бы проблема в передаче в
action="{{ url_for('get_task',task_id=TaskID) }}"
параметра
TaskID.
При попытке загрузить страницу
href="127.0.0.1:5000/search_page">
Получаю ошибку
jinja2.exceptions.UndefinedError
UndefinedError: 'TaskID' is undefined
После изменения формы следующим образом ошибка поменялась
<form action="{{ url_for('get_task') }}">
<label for="TaskID">Please enter Task ID:</label>
<input type="text" name="task_id"/><br />
<input type="submit">
</form>
При сборке проекта получаю следующую ошибку
werkzeug.routing.BuildError
BuildError: ('get_task', {}, None)