必要なもの一覧
ここではユーザー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("/")
ログアウトの処理はセッションを削除するだけです。
実は、ここで期限切れのイベントの処理も同時に行っています。写真を削除してイベントも削除しています。