Compare commits
5 Commits
d8b069a66d
...
d2080e3189
| Author | SHA1 | Date |
|---|---|---|
|
|
d2080e3189 | |
|
|
9de6a25fd8 | |
|
|
5c909f8626 | |
|
|
1efc782862 | |
|
|
a17fd9e769 |
|
|
@ -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" />
|
||||
|
|
|
|||
43
app/app.py
43
app/app.py
|
|
@ -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)
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -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>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
Reference in New Issue