必要なもの一覧
ここではユーザーIDをusersデータベースに登録を行っています。またセッションにIDを登録することでサインインの確認をしています。
サインアップ画面
signup.html
<!DOCTYPE html> <html lang="jp"> <head> <meta charset="UTF-8"> <title>サインアップページ</title> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <meta name="description" content="pythonとdeta.spaceのサンプルページです" > <meta name="keywords" content="プログラム,教育,python,deta.space,bootstrap,flask" > <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous"> <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='css/style.css')}}"> </head> <body class="text-center"> <div class="container"> <p class="mt-3 mb-3">あなたのアカウントは{{id}}です。Loginから入り直してください</p> <ul class="list-group"> <li class="list-group-item">自分でイベントを作成したら、そのイベントに1MByte以下の小さな写真を1枚づつ登録できます。</li> <li class="list-group-item">イベント数は最大10</li> <li class="list-group-item">1イベントに最大10枚</li> <li class="list-group-item">他人が作ったイベントには参加希望を出せます。許可されれば自分も写真を登録できます</li> <li class="list-group-item">処理が長いとTimeoutします。←で戻って続けてください</li> <li class="list-group-item">写真が大きいと413エラーになることもあります。←で戻って続けてください</li> <li class="list-group-item">自分が登録した写真は削除できます</li> <li class="list-group-item">イベントは最長10日で消えます。写真も削除されます</li> </ul> <a href="/">Login</a> </div> <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js" integrity="sha384-IQsoLXl5PILFhosVNubq5LC7Qb9DXgDA9i+tQ8Zj3iwWAwPtgFTxbJ8NT4GN1R8p" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.min.js" integrity="sha384-cVKIPhGWiC2Al4u+LWgxfKTRIcfu0JTxR+EQDz/bgldoEyl4H0zUF0QKbrJ0EcQF" crossorigin="anonymous"></script> </body> </html>
main サインアップ部分
main.py(抜粋)
login()で行っています。 ログイン編を見てください
main ログアウト部分
main.py(抜粋)
@app.route("/logout", methods=["GET"]) def logout(): #期限切れ写真の削除 events = event.Event() photos = photoBase.PhotoBase() drive = driveFile.DriveFile() t = datetime.date.today() edata = events.dirLostEvents(t.strftime("%Y-%m-%d")) for e in edata.items: pdata = events.dirEventPhotos(e["key"],True) if pdata != None: for p in pdata: drive.deleteFile(p["filename"]) photos.deletePhoto(p["key"]) events.deleteEvent(e["key"]) session.pop('id',None) session.clear() return redirect("/")
ログアウトの処理はセッションを削除するだけです。
実は、ここで期限切れのイベントの処理も同時に行っています。写真を削除してイベントも削除しています。