在後端開發時,咱們會常常遇到這樣的需求,一個字段要儲存多張圖片,以下:前端
通常狀況咱們會想到的是:
新建一張表,以一對多的方式進行儲存。可是這樣咱們就會面臨一系列問題:python
增刪查改都會遇到一系列的問題,那要逐條去解決嗎?其實你僅須要兩行python代碼。數據庫
在前端兩年工做經驗告訴我:這種狀況用數組(也就是字典)增刪查改最方便,因此沒必要擔憂前端用不了的問題json
可是數據庫存不了字典,因此咱們要作的只有兩步:flask
你說管理另外一張表有點麻煩,那我管理你一個區區的字符串還不是垂手可得嗎?
這樣作有以下優點:後端
兩行代碼解決四個問題,同時少管理了一張表api
@api.route("/role/add",methods=["POST"])
@login_required
@power_filter
def roleAdd():
''' 新增角色 :return:狀態 '''
res_dir = request.get_json()
if res_dir is None:
return jsonify(code=RET.PARAMERR,msg="未接收到參數")
name = res_dir.get("name")
head_portrait = res_dir.get("head_portrait")
gender = res_dir.get("gender")
age = res_dir.get("age")
attribute = res_dir.get("attribute")
site = res_dir.get("site")
intro = res_dir.get("intro")
image_list = res_dir.get("image_list")
if not all([name,head_portrait,gender,attribute,site]):
return jsonify(code=RET.PARAMERR,msg="缺乏參數")
#若是前端一張圖片都沒上傳,就儲存一個空字符
imgStr = ''
if len(image_list) > 0:
#若是上傳了,就把圖片轉成str而後儲存在對應的字段裏
imgStr = ",".join(image_list)
role = Role(name=name,head_portrait=head_portrait,gender=gender,age=age,attribute=attribute,site=site,intro=intro,image_list=imgStr)
try:
db.session.add(role)
db.session.commit()
except Exception as e:
db.session.rollback()
current_app.logger.error(e)
return jsonify(code=RET.DATAERR,msg="添加失敗")
return jsonify(code=RET.OK,msg="添加成功")
複製代碼
看看儲存效果:數組
記得要把這個字段的儲存字符設置大一點,我這裏最多儲存四張,因此給了280*4bash
image_list = db.Column(db.String(280 * 4), default="") # 最多4張圖片
複製代碼
@api.route("/role/detail/<int:id>")
def roleDetail(id):
''' 角色詳情 :param id: :return: '''
role = Role.query.get(id)
if role is None:
return jsonify(code=RET.DATAERR,msg="未查找到數據")
#角色屬性
attribute = Role.getAttr(id)
#角色地區
site = Role.getSite(id)
data = {
"id":role.id,
"name":role.name,
"head_portrait":role.head_portrait,
"gender":role.gender,
"age":role.age,
"site":site,
"intro":role.intro,
"image_list":role.image_list.split(","),#重點在這
"attribute":attribute
}
return jsonify(code=RET.OK,data=data)
複製代碼
看看返回效果 session
相關flask文章