Compare commits

...

5 Commits

Author SHA1 Message Date
wangsiyuan d2080e3189 更新 app.py 2023-12-23 16:05:48 +08:00
wangsiyuan 9de6a25fd8 创建 register.html 2023-12-23 16:05:46 +08:00
wangsiyuan 5c909f8626 更新 login.html 2023-12-23 16:05:44 +08:00
wangsiyuan 1efc782862 创建 jquery.min.js 2023-12-23 16:04:29 +08:00
wangsiyuan a17fd9e769 更新 SmartRollCall.iml 2023-12-23 16:04:14 +08:00
5 changed files with 200 additions and 45 deletions

View File

@ -9,6 +9,7 @@
</content>
<orderEntry type="jdk" jdkName="Python 3.11 (venv)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="jquery" level="application" />
</component>
<component name="TemplatesService">
<option name="TEMPLATE_CONFIGURATION" value="Jinja2" />

View File

@ -1,11 +1,46 @@
from flask import Flask, render_template
from flask import Flask, request, redirect, url_for, render_template, session, jsonify
app = Flask(__name__)
app.secret_key = 'sUNiJ7QPulxrbmZD'
@app.route('/')
def index():
# 如果用户已登录,则重定向到主页;否则,重定向到登录页面
if 'username' in session:
return redirect(url_for('home'))
else:
return render_template('login.html')
@app.route('/register', methods=['GET','POST'])
def register():
return render_template('register.html')
@app.route('/login', methods=['POST'])
def login():
return render_template('login.html')
username = request.form['username']
password = request.form['password']
print(username,password)
# 验证用户名和密码...
if valid_login(username, password):
# 登录成功
session['username'] = username
return jsonify(success=True, message="登录成功")
else:
# 登录失败
return jsonify(success=False, message="无效的用户名或密码")
def valid_login(username, password):
# 这里应该是验证用户名和密码的逻辑,比如查询数据库等等
# 假设用户名是admin且密码是secret
return username == 'admin' and password == '1'
@app.route('/home')
def home():
if 'username' in session:
return '你已登录,欢迎, %s!' % session['username']
else:
return redirect(url_for('login')) # 如果用户未登录,重定向到登录页面
if __name__ == '__main__':
app.run()
app.run(debug=True)

2
app/static/jquery.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,10 +1,10 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>登录</title>
<link href="static/css/layui.css" rel="stylesheet">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>登录</title>
<link href="static/css/layui.css" rel="stylesheet">
</head>
<body class="layui-padding-3">
@ -12,52 +12,78 @@
.demo-login-container{width: 320px; margin: 21px auto 0;}
.demo-login-other .layui-icon{position: relative; display: inline-block; margin: 0 2px; top: 2px; font-size: 26px;}
</style>
<form class="layui-form">
<form class="layui-form" id="loginForm">
<h1 style="text-align:center; color: #16baaa;">网上上课点名系统</h1>
<div class="demo-login-container">
<div class="layui-form-item">
<div class="layui-input-wrap">
<div class="layui-input-prefix">
<i class="layui-icon layui-icon-username"></i>
<div class="demo-login-container">
<div class="layui-form-item">
<div class="layui-input-wrap">
<div class="layui-input-prefix">
<i class="layui-icon layui-icon-username"></i>
</div>
<input type="text" name="username" value="" lay-verify="required" placeholder="用户名"
lay-reqtext="请填写用户名" autocomplete="off" class="layui-input" lay-affix="clear">
</div>
</div>
<input type="text" name="username" value="" lay-verify="required" placeholder="用户名" lay-reqtext="请填写用户名" autocomplete="off" class="layui-input" lay-affix="clear">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-wrap">
<div class="layui-input-prefix">
<i class="layui-icon layui-icon-password"></i>
<div class="layui-form-item">
<div class="layui-input-wrap">
<div class="layui-input-prefix">
<i class="layui-icon layui-icon-password"></i>
</div>
<input type="password" name="password" value="" lay-verify="required" placeholder="密 码"
lay-reqtext="请填写密码" autocomplete="off" class="layui-input" lay-affix="eye">
</div>
</div>
<div class="layui-form-item">
<input type="checkbox" name="remember" lay-skin="primary" title="记住密码">
<a href="#forget" style="float: right; margin-top: 7px;">忘记密码?</a>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" type="submit" lay-filter="login" id="btnLogin">登录</button>
</div>
<div class="layui-form-item">
<!-- 注册按钮 -->
<button type="button" class="layui-btn layui-btn-fluid" id="btnRegister">注册</button>
</div>
<input type="password" name="password" value="" lay-verify="required" placeholder="密 码" lay-reqtext="请填写密码" autocomplete="off" class="layui-input" lay-affix="eye">
</div>
</div>
<div class="layui-form-item">
<input type="checkbox" name="remember" lay-skin="primary" title="记住密码">
<a href="#forget" style="float: right; margin-top: 7px;">忘记密码?</a>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" lay-submit lay-filter="demo-login">登录</button>
</div>
</div>
</form>
<script src="static/layui.js"></script>
<script src="static/min.js"></script>
<script>
layui.use(function(){
var form = layui.form;
var layer = layui.layer;
// 提交事件
form.on('submit(demo-login)', function(data){
var field = data.field; // 获取表单字段值
// 显示填写结果,仅作演示用
layer.alert(JSON.stringify(field), {
title: '当前填写的字段值'
layui.use(['form', 'layer'], function () {
var form = layui.form;
var layer = layui.layer;
// 监听提交事件
form.on('submit(login)', function (data) {
$.ajax({
type: "POST",
url: "/login", // 确保这是你的登录路由
data: data.field, // 表单数据
dataType: 'json',
success: function (response) {
// 根据返回的结果进行操作
// 如果成功,可能会重定向到其他页面
// 如果失败,可能会显示错误信息
if (response.success) {
window.location.href = '/home'; // 或者你的成功页面
} else {
console.log(response.message)
layer.alert('登录失败: ' + response.message);
}
},
error: function () {
layer.alert('登录请求失败');
}
});
return false; // 阻止表单的默认提交
});
// 监听注册按钮的点击事件
$('#btnRegister').click(function () {
window.location.href = '/register'; // 确保这是你的注册路由
});
});
// 此处可执行 Ajax 等操作
// …
return false; // 阻止默认 form 跳转
});
});
</script>

View File

@ -0,0 +1,91 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>注册</title>
<link href="static/css/layui.css" rel="stylesheet">
</head>
<body>
<style>
.demo-reg-container {
width: 320px;
margin: 21px auto 0;
}
.demo-reg-item {
margin-bottom: 10px; /* 调整间距 */
}
</style>
<h1 style="text-align:center; color: #16baaa;">注册</h1>
<form class="layui-form">
<div class="demo-reg-container">
<div class="layui-form-item demo-reg-item">
<div class="layui-input-wrap">
<div class="layui-input-prefix">
<i class="layui-icon layui-icon-username"></i>
</div>
<input type="text" name="nickname" value="" lay-verify="required" placeholder="昵称"
autocomplete="off" class="layui-input" lay-affix="clear">
</div>
</div>
<div class="layui-form-item demo-reg-item">
<div class="layui-input-wrap">
<div class="layui-input-prefix">
<i class="layui-icon layui-icon-cellphone"></i>
</div>
<input type="text" name="cellphone" value="" lay-verify="required|phone" placeholder="手机号"
lay-reqtext="请填写手机号" autocomplete="off" class="layui-input" id="reg-cellphone">
</div>
</div>
<div class="layui-form-item demo-reg-item">
<div class="layui-input-wrap">
<div class="layui-input-prefix">
<i class="layui-icon layui-icon-password"></i>
</div>
<input type="password" name="password" value="" lay-verify="required" placeholder="密码"
autocomplete="off" class="layui-input" id="reg-password" lay-affix="eye">
</div>
</div>
<div class="layui-form-item demo-reg-item">
<div class="layui-input-wrap">
<div class="layui-input-prefix">
<i class="layui-icon layui-icon-password"></i>
</div>
<input type="password" name="confirmPassword" value="" lay-verify="required|confirmPassword"
placeholder="确认密码" autocomplete="off" class="layui-input" lay-affix="eye">
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" lay-submit lay-filter="demo-reg">注册</button>
</div>
</div>
</form>
<script src="static/layui.js"></script>
<script>
layui.use(function () {
var $ = layui.$;
var form = layui.form;
var layer = layui.layer;
var util = layui.util;
form.verify({
confirmPassword: function (value, item) {
var passwordValue = $('#reg-password').val();
if (value !== passwordValue) {
return '两次密码输入不一致';
}
}
});
form.on('submit(demo-reg)', function (data) {
// AJAX 请求和其他逻辑...
return false;
});
});
</script>
</body>
</html>