使用瓶框架更新 Python 中的项目字典
Update a dictionary of item in Python using bottle framework
我正在使用 bottle 框架在 Python 中进行 crud rest API,但我无法通过字典中的 id 更新项目。到目前为止,我已经完成了创建、读取和删除。
这是我的词典:
items = [
{"id": "1", "name": "a", "lastname": "a"},
{"id": "2", "name": "b", "lastname": "b"},
{"id": "3", "name": "c", "lastname": "c"},
]
这是我的路线:
from bottle import get, post, run, redirect, request, response, view, put
@put("/items/<item_id>")
def updated_item(item_id):
for item in items:
if item["id"] == item_id:
new_name = request.forms.get("name")
new_lastname = request.forms.get("lastname")
#(I need some help here)
return redirect("/items")
如果 items
索引不变,则无需迭代项目。这意味着 list
和 item["id"]
:
中的索引之间存在映射
@put("/items/<item_id>")
def updated_item(item_id):
new_name = request.forms.get("name")
new_lastname = request.forms.get("lastname")
items[int(item_id) - 1] = {"id": item_id, "name": new_name, "lastname": "new_lastname"}
return redirect("/items")
如果删除项目,只需保留一个空元素以保持顺序:
@delete("/items/<item_id>"):
def delete_item(item_id):
items[int(item_id)] = {}
当然,如果id
是任意的,这就不行了,例如:
items = [
{"id": "12", "name": "a", "lastname": "a"},
{"id": "21", "name": "b", "lastname": "b"},
{"id": "53", "name": "c", "lastname": "c"},
]
如果是这种情况,您应该考虑使用内存数据库(例如 SQLite),它非常适合管理您刚才展示的记录。
然后数据库将替换 items
(好吧,它将是 table)。
我正在使用 bottle 框架在 Python 中进行 crud rest API,但我无法通过字典中的 id 更新项目。到目前为止,我已经完成了创建、读取和删除。
这是我的词典:
items = [
{"id": "1", "name": "a", "lastname": "a"},
{"id": "2", "name": "b", "lastname": "b"},
{"id": "3", "name": "c", "lastname": "c"},
]
这是我的路线:
from bottle import get, post, run, redirect, request, response, view, put
@put("/items/<item_id>")
def updated_item(item_id):
for item in items:
if item["id"] == item_id:
new_name = request.forms.get("name")
new_lastname = request.forms.get("lastname")
#(I need some help here)
return redirect("/items")
如果 items
索引不变,则无需迭代项目。这意味着 list
和 item["id"]
:
@put("/items/<item_id>")
def updated_item(item_id):
new_name = request.forms.get("name")
new_lastname = request.forms.get("lastname")
items[int(item_id) - 1] = {"id": item_id, "name": new_name, "lastname": "new_lastname"}
return redirect("/items")
如果删除项目,只需保留一个空元素以保持顺序:
@delete("/items/<item_id>"):
def delete_item(item_id):
items[int(item_id)] = {}
当然,如果id
是任意的,这就不行了,例如:
items = [
{"id": "12", "name": "a", "lastname": "a"},
{"id": "21", "name": "b", "lastname": "b"},
{"id": "53", "name": "c", "lastname": "c"},
]
如果是这种情况,您应该考虑使用内存数据库(例如 SQLite),它非常适合管理您刚才展示的记录。
然后数据库将替换 items
(好吧,它将是 table)。