diff --git a/README.md b/README.md
index 24e70e2..d54911e 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,44 @@
-# my_one_web
+# My One Web - 云下飞的个人网站
-云下飞的个人欢迎页面 🐶
\ No newline at end of file
+基于 Python Flask 构建的个人网站,支持登录注册功能。
+
+## 功能特性
+
+- 🎨 精美的欢迎页面
+- 🔐 用户注册功能
+- 🔑 用户登录/登出功能
+- 💾 SQLite 数据库存储
+- 🐶 小白倾情打造
+
+## 技术栈
+
+- Python 3.12
+- Flask 3.0
+- Flask-Login
+- Flask-SQLAlchemy
+- SQLite
+
+## 安装运行
+
+```bash
+# 安装依赖
+pip install -r requirements.txt
+
+# 运行应用
+python app.py
+```
+
+## 默认账户
+
+- 用户名: `yunxiafei`
+- 密码: `xu123654`
+
+## 访问地址
+
+- 首页: http://localhost:5000
+- 登录: http://localhost:5000/login
+- 注册: http://localhost:5000/register
+
+---
+
+Made with ❤️ by 小白 🐶
diff --git a/app.py b/app.py
new file mode 100644
index 0000000..430ed8a
--- /dev/null
+++ b/app.py
@@ -0,0 +1,148 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""
+云下飞的个人网站 - Flask 版本
+支持登录、注册功能
+作者:小白 🐶
+"""
+
+from flask import Flask, render_template, redirect, url_for, request, flash
+from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user
+from flask_sqlalchemy import SQLAlchemy
+from werkzeug.security import generate_password_hash, check_password_hash
+import os
+
+# 初始化应用
+app = Flask(__name__)
+app.config['SECRET_KEY'] = 'xiaobai-secret-key-2026'
+app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'
+app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
+
+# 初始化数据库
+db = SQLAlchemy(app)
+
+# 初始化登录管理
+login_manager = LoginManager()
+login_manager.init_app(app)
+login_manager.login_view = 'login'
+
+
+# 用户模型
+class User(UserMixin, db.Model):
+ id = db.Column(db.Integer, primary_key=True)
+ username = db.Column(db.String(80), unique=True, nullable=False)
+ password_hash = db.Column(db.String(120), nullable=False)
+
+ def set_password(self, password):
+ self.password_hash = generate_password_hash(password)
+
+ def check_password(self, password):
+ return check_password_hash(self.password_hash, password)
+
+
+@login_manager.user_loader
+def load_user(user_id):
+ return User.query.get(int(user_id))
+
+
+# 路由 - 首页
+@app.route('/')
+def index():
+ if current_user.is_authenticated:
+ return render_template('welcome.html', username=current_user.username)
+ return render_template('index.html')
+
+
+# 路由 - 登录
+@app.route('/login', methods=['GET', 'POST'])
+def login():
+ if current_user.is_authenticated:
+ return redirect(url_for('index'))
+
+ if request.method == 'POST':
+ username = request.form.get('username')
+ password = request.form.get('password')
+
+ user = User.query.filter_by(username=username).first()
+
+ if user and user.check_password(password):
+ login_user(user)
+ flash('登录成功!欢迎回来~ 🐶', 'success')
+ return redirect(url_for('index'))
+ else:
+ flash('用户名或密码错误!', 'error')
+
+ return render_template('login.html')
+
+
+# 路由 - 注册
+@app.route('/register', methods=['GET', 'POST'])
+def register():
+ if current_user.is_authenticated:
+ return redirect(url_for('index'))
+
+ if request.method == 'POST':
+ username = request.form.get('username')
+ password = request.form.get('password')
+ confirm_password = request.form.get('confirm_password')
+
+ # 验证
+ if not username or not password:
+ flash('用户名和密码不能为空!', 'error')
+ return render_template('register.html')
+
+ if password != confirm_password:
+ flash('两次密码不一致!', 'error')
+ return render_template('register.html')
+
+ if len(username) < 3:
+ flash('用户名至少3个字符!', 'error')
+ return render_template('register.html')
+
+ if len(password) < 6:
+ flash('密码至少6个字符!', 'error')
+ return render_template('register.html')
+
+ # 检查用户是否存在
+ existing_user = User.query.filter_by(username=username).first()
+ if existing_user:
+ flash('用户名已存在!', 'error')
+ return render_template('register.html')
+
+ # 创建新用户
+ user = User(username=username)
+ user.set_password(password)
+ db.session.add(user)
+ db.session.commit()
+
+ flash('注册成功!请登录~ 🎉', 'success')
+ return redirect(url_for('login'))
+
+ return render_template('register.html')
+
+
+# 路由 - 登出
+@app.route('/logout')
+@login_required
+def logout():
+ logout_user()
+ flash('已退出登录!', 'success')
+ return redirect(url_for('index'))
+
+
+# 创建数据库
+with app.app_context():
+ db.create_all()
+
+ # 创建默认管理员账户
+ admin = User.query.filter_by(username='yunxiafei').first()
+ if not admin:
+ admin = User(username='yunxiafei')
+ admin.set_password('xu123654')
+ db.session.add(admin)
+ db.session.commit()
+ print("✅ 默认管理员账户已创建: yunxiafei / xu123654")
+
+
+if __name__ == '__main__':
+ app.run(host='0.0.0.0', port=5000, debug=False)
diff --git a/index.html b/index.html
deleted file mode 100644
index 52dd09b..0000000
--- a/index.html
+++ /dev/null
@@ -1,117 +0,0 @@
-
-
-
-
-
- 欢迎 - 云下飞
-
-
-
-
-
- 👋
-
-
欢迎云下飞
-
Welcome, Yun Xia Fei!
-
- 这是您的个人服务器
- 由 小白 🐶 为您精心打造
- 祝您使用愉快!
-
-
-
-
-
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..ce0593f
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,4 @@
+Flask==3.0.0
+Flask-Login==0.6.3
+Flask-SQLAlchemy==3.1.1
+Werkzeug==3.0.1
diff --git a/static/css/style.css b/static/css/style.css
new file mode 100644
index 0000000..14f67e8
--- /dev/null
+++ b/static/css/style.css
@@ -0,0 +1,235 @@
+* {
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+}
+
+body {
+ min-height: 100vh;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif;
+}
+
+.container {
+ text-align: center;
+ padding: 60px 40px;
+ background: rgba(255, 255, 255, 0.95);
+ border-radius: 20px;
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
+ max-width: 600px;
+ width: 90%;
+ animation: fadeIn 0.6s ease-out;
+}
+
+@keyframes fadeIn {
+ from {
+ opacity: 0;
+ transform: translateY(30px);
+ }
+ to {
+ opacity: 1;
+ transform: translateY(0);
+ }
+}
+
+.avatar {
+ width: 120px;
+ height: 120px;
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ border-radius: 50%;
+ margin: 0 auto 30px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-size: 60px;
+ color: white;
+ box-shadow: 0 10px 30px rgba(102, 126, 234, 0.4);
+}
+
+h1 {
+ font-size: 42px;
+ color: #333;
+ margin-bottom: 15px;
+ font-weight: 700;
+}
+
+.welcome {
+ font-size: 24px;
+ color: #667eea;
+ margin-bottom: 25px;
+ font-weight: 500;
+}
+
+.message {
+ font-size: 16px;
+ color: #666;
+ line-height: 1.8;
+ margin-bottom: 30px;
+}
+
+.auth-buttons {
+ display: flex;
+ gap: 15px;
+ justify-content: center;
+ margin-bottom: 20px;
+}
+
+.btn {
+ display: inline-block;
+ padding: 12px 30px;
+ border-radius: 25px;
+ text-decoration: none;
+ font-size: 16px;
+ font-weight: 600;
+ cursor: pointer;
+ transition: all 0.3s ease;
+ border: none;
+}
+
+.btn-primary {
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ color: white;
+}
+
+.btn-primary:hover {
+ transform: translateY(-2px);
+ box-shadow: 0 5px 20px rgba(102, 126, 234, 0.5);
+}
+
+.btn-secondary {
+ background: white;
+ color: #667eea;
+ border: 2px solid #667eea;
+}
+
+.btn-secondary:hover {
+ background: #667eea;
+ color: white;
+}
+
+.btn-danger {
+ background: linear-gradient(135deg, #ff6b6b 0%, #ee5a5a 100%);
+ color: white;
+}
+
+.btn-danger:hover {
+ transform: translateY(-2px);
+ box-shadow: 0 5px 20px rgba(238, 90, 90, 0.5);
+}
+
+.btn-full {
+ width: 100%;
+}
+
+.footer {
+ font-size: 14px;
+ color: #999;
+ padding-top: 20px;
+ border-top: 1px solid #eee;
+ margin-top: 20px;
+}
+
+.footer span {
+ color: #667eea;
+ font-weight: 600;
+}
+
+.sparkle {
+ animation: sparkle 2s infinite;
+}
+
+@keyframes sparkle {
+ 0%, 100% { opacity: 1; }
+ 50% { opacity: 0.5; }
+}
+
+/* 表单样式 */
+.auth-container {
+ max-width: 400px;
+}
+
+.form-group {
+ margin-bottom: 20px;
+}
+
+.form-group input {
+ width: 100%;
+ padding: 15px 20px;
+ border: 2px solid #eee;
+ border-radius: 25px;
+ font-size: 16px;
+ transition: border-color 0.3s ease;
+ outline: none;
+}
+
+.form-group input:focus {
+ border-color: #667eea;
+}
+
+.auth-link {
+ margin-top: 20px;
+ color: #666;
+ font-size: 14px;
+}
+
+.auth-link a {
+ color: #667eea;
+ text-decoration: none;
+ font-weight: 600;
+}
+
+.auth-link a:hover {
+ text-decoration: underline;
+}
+
+/* 消息提示 */
+.flash-success {
+ background: #d4edda;
+ color: #155724;
+ padding: 12px 20px;
+ border-radius: 10px;
+ margin-bottom: 20px;
+ border: 1px solid #c3e6cb;
+}
+
+.flash-error {
+ background: #f8d7da;
+ color: #721c24;
+ padding: 12px 20px;
+ border-radius: 10px;
+ margin-bottom: 20px;
+ border: 1px solid #f5c6cb;
+}
+
+.flash-messages {
+ position: fixed;
+ top: 20px;
+ right: 20px;
+ z-index: 1000;
+}
+
+/* 响应式 */
+@media (max-width: 480px) {
+ .container {
+ padding: 40px 25px;
+ }
+
+ h1 {
+ font-size: 32px;
+ }
+
+ .welcome {
+ font-size: 20px;
+ }
+
+ .auth-buttons {
+ flex-direction: column;
+ }
+
+ .btn {
+ width: 100%;
+ }
+}
diff --git a/templates/index.html b/templates/index.html
new file mode 100644
index 0000000..be3174a
--- /dev/null
+++ b/templates/index.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+ 欢迎 - 云下飞
+
+
+
+
+
+ 👋
+
+
欢迎云下飞
+
Welcome, Yun Xia Fei!
+
+ 这是您的个人服务器
+ 由 小白 🐶 为您精心打造
+ 祝您使用愉快!
+
+
+
+
+
+
diff --git a/templates/login.html b/templates/login.html
new file mode 100644
index 0000000..d4dfc8f
--- /dev/null
+++ b/templates/login.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+ 登录 - 云下飞
+
+
+
+
+
+ 🔐
+
+
用户登录
+
+ {% with messages = get_flashed_messages(with_categories=true) %}
+ {% if messages %}
+ {% for category, message in messages %}
+
{{ message }}
+ {% endfor %}
+ {% endif %}
+ {% endwith %}
+
+
+
+
+ 还没有账户?立即注册
+
+
+ 返回首页
+
+
+
+
+
+
diff --git a/templates/register.html b/templates/register.html
new file mode 100644
index 0000000..36ca296
--- /dev/null
+++ b/templates/register.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+ 注册 - 云下飞
+
+
+
+
+
+ 📝
+
+
用户注册
+
+ {% with messages = get_flashed_messages(with_categories=true) %}
+ {% if messages %}
+ {% for category, message in messages %}
+
{{ message }}
+ {% endfor %}
+ {% endif %}
+ {% endwith %}
+
+
+
+
+ 已有账户?立即登录
+
+
+ 返回首页
+
+
+
+
+
+
diff --git a/templates/welcome.html b/templates/welcome.html
new file mode 100644
index 0000000..95fcca9
--- /dev/null
+++ b/templates/welcome.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+ 欢迎回来 - {{ username }}
+
+
+
+
+
+ 🎉
+
+
欢迎回来,{{ username }}!
+
Welcome Back!
+
+ 您已成功登录
+ 这是您的专属空间
+ 小白一直陪伴着您 🐶
+
+
+
+
+
+ {% with messages = get_flashed_messages(with_categories=true) %}
+ {% if messages %}
+
+ {% for category, message in messages %}
+
{{ message }}
+ {% endfor %}
+
+ {% endif %}
+ {% endwith %}
+
+