2016-12-22 10 views
0

私はすでに既存のコードを変更しようとしています。フォームを追加して写真を追加するだけです。複数のルートとボトルフレームワークの機能

のpython:

@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> 

サーバログ: トレースバック(最新の呼び出しの最後): ファイル「/ホーム/空/パイソン/ "/ bin/lib/python3.5/site-packages/bottle.py"、行862、_handleで return route.call(** args )

ファイル "/home/empty/python/bottle/lib/python3.5/site-packages/bottle.py"、ラッパーの行1740は、 RV =コールバック(*、** KA)

ファイル "/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 name、ext = os.path.splitext(upload.filename) AttributeError: 'NoneType'オブジェクトに属性がありません 'ファイル名 ' 127.0.0.1 - [22/Dec/2016 23:20:42 ] "GET/photos/add HTTP/1.1" 500 751

答えて

0

urlパス/photos/addをコールバック関数upload_funcにリンクしました。

https://bottlepy.org/docs/dev/tutorial.html#request-routing https://bottlepy.org/docs/dev/api.html#bottle.Bottle.route

も注意してください:

@route('/photos/add', method=['GET', 'POST']) 
@jinja_view('add.html') 
def upload_func(): 
    # ... 

は見てみましょう:あなたは2つの要求タイプを(POSTをGETして)、その後、関数デコレータは次のようになります。サポートしたいように見えますこのようにコードを書くべきではない - 複雑すぎる

関連する問題