[英]multiple routes and function in bottle framework
我正在嘗試修改已經存在的代碼,只需添加表單即可添加照片。
蟒蛇:
@route('/photos/add')
@jinja_view('add.html')
@post('/photos/add')
def upload_func():
upload = request.files.get('pic')
name, ext = os.path.splitext(upload.filename)
if ext not in ('.png', '.jpg', '.jpeg'):
return "ext is not allowed"
save_path = "/src/photo_gallery/photos"
upload.save(save_path)
return "photo is saved"
HTML:
<form action="/photos/add" method="post">
<div align="center">
<label>Picture</label>
<input type="file" name="pic" required>
</div>
<div>
<label>Info</label>
<input type="text" name="text">
</div>
<div>
<input type="submit" value="add">
</div>
</form>
服務器日志:追溯(最近一次調用):文件“ /home/empty/python/bottle/lib/python3.5/site-packages/bottle.py”,行862,在_handle返回route.call(** args )
在包裝器rv = callback(* a,** ka)中的文件“ /home/empty/python/bottle/lib/python3.5/site-packages/bottle.py”,行1740
文件“ /home/empty/python/bottle/lib/python3.5/site-packages/bottle.py”,第3635行,包裝結果= func(* args,** kwargs)
文件“ /home/empty/python/bottle/src/photo_gallery/app.py”,第50行,在upload_func名稱中,ext = os.path.splitext(upload.filename)AttributeError:“ NoneType”對象沒有屬性“ filename” '127.0.0.1--[2016年12月22日23:20:42]“ GET / photos / add HTTP / 1.1” 500751
您已將url路徑/photos/add
到回調函數upload_func
。 看起來您想支持兩種請求類型(GET和POST),然后函數裝飾器應如下所示:
@route('/photos/add', method=['GET', 'POST'])
@jinja_view('add.html')
def upload_func():
# ...
看一眼:
https://bottlepy.org/docs/dev/tutorial.html#request-routing https://bottlepy.org/docs/dev/api.html#bottle.Bottle.route
另請注意,代碼不應這樣寫-太復雜了
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.