feat: 使用 Flask 重构网站,增加登录注册功能 🐶

- Python Flask 3.1 后端
- 用户注册/登录功能
- SQLite 数据库
- 响应式设计
- 默认管理员: yunxiafei / xu123654
This commit is contained in:
root
2026-03-11 21:31:45 +08:00
parent a3726e5a8c
commit c337481daa
9 changed files with 594 additions and 119 deletions

30
templates/index.html Normal file
View File

@@ -0,0 +1,30 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>欢迎 - 云下飞</title>
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
</head>
<body>
<div class="container">
<div class="avatar">
<span class="sparkle">👋</span>
</div>
<h1>欢迎云下飞</h1>
<p class="welcome">Welcome, Yun Xia Fei!</p>
<p class="message">
这是您的个人服务器<br>
<strong>小白</strong> 🐶 为您精心打造<br>
祝您使用愉快!
</p>
<div class="auth-buttons">
<a href="{{ url_for('login') }}" class="btn btn-primary">登录</a>
<a href="{{ url_for('register') }}" class="btn btn-secondary">注册</a>
</div>
<div class="footer">
Powered by <span>Flask</span> & <span>OpenClaw</span>
</div>
</div>
</body>
</html>

46
templates/login.html Normal file
View File

@@ -0,0 +1,46 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>登录 - 云下飞</title>
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
</head>
<body>
<div class="container auth-container">
<div class="avatar">
<span>🔐</span>
</div>
<h1>用户登录</h1>
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
{% for category, message in messages %}
<div class="flash-{{ category }}">{{ message }}</div>
{% endfor %}
{% endif %}
{% endwith %}
<form method="POST" action="{{ url_for('login') }}">
<div class="form-group">
<input type="text" name="username" placeholder="用户名" required>
</div>
<div class="form-group">
<input type="password" name="password" placeholder="密码" required>
</div>
<button type="submit" class="btn btn-primary btn-full">登录</button>
</form>
<p class="auth-link">
还没有账户?<a href="{{ url_for('register') }}">立即注册</a>
</p>
<p class="auth-link">
<a href="{{ url_for('index') }}">返回首页</a>
</p>
<div class="footer">
Powered by <span>Flask</span> & <span>OpenClaw</span>
</div>
</div>
</body>
</html>

49
templates/register.html Normal file
View File

@@ -0,0 +1,49 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>注册 - 云下飞</title>
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
</head>
<body>
<div class="container auth-container">
<div class="avatar">
<span>📝</span>
</div>
<h1>用户注册</h1>
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
{% for category, message in messages %}
<div class="flash-{{ category }}">{{ message }}</div>
{% endfor %}
{% endif %}
{% endwith %}
<form method="POST" action="{{ url_for('register') }}">
<div class="form-group">
<input type="text" name="username" placeholder="用户名至少3个字符" required>
</div>
<div class="form-group">
<input type="password" name="password" placeholder="密码至少6个字符" required>
</div>
<div class="form-group">
<input type="password" name="confirm_password" placeholder="确认密码" required>
</div>
<button type="submit" class="btn btn-primary btn-full">注册</button>
</form>
<p class="auth-link">
已有账户?<a href="{{ url_for('login') }}">立即登录</a>
</p>
<p class="auth-link">
<a href="{{ url_for('index') }}">返回首页</a>
</p>
<div class="footer">
Powered by <span>Flask</span> & <span>OpenClaw</span>
</div>
</div>
</body>
</html>

39
templates/welcome.html Normal file
View File

@@ -0,0 +1,39 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>欢迎回来 - {{ username }}</title>
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
</head>
<body>
<div class="container">
<div class="avatar">
<span class="sparkle">🎉</span>
</div>
<h1>欢迎回来,{{ username }}</h1>
<p class="welcome">Welcome Back!</p>
<p class="message">
您已成功登录<br>
这是您的专属空间<br>
小白一直陪伴着您 🐶
</p>
<div class="auth-buttons">
<a href="{{ url_for('logout') }}" class="btn btn-danger">退出登录</a>
</div>
<div class="footer">
Powered by <span>Flask</span> & <span>OpenClaw</span>
</div>
</div>
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
<div class="flash-messages">
{% for category, message in messages %}
<div class="flash-{{ category }}">{{ message }}</div>
{% endfor %}
</div>
{% endif %}
{% endwith %}
</body>
</html>