# import ssl
import json
from flask import Flask, render_template, request, redirect, url_for, abort, make_response
from datetime import datetime
app = Flask(__name__,template_folder='./template')
name = ['']
listusers = list()
listusers.append(['123','123',datetime.now().date()])
listusers.append(['222','222',datetime.now().date()])
listusers.append(['333','444',datetime.now().date()])
listusers.append(['444','333',datetime.now().date()])
listusers.append(['111','111',datetime.now().date()])
listusers.append(['321','321',datetime.now().date()])
@app.route('/')
def index():
return render_template('main.html')
@app.route('/home')
def home():
if name[0] == '':
return redirect(url_for('login'))
return render_template('home.html', name=name[0],listusers=listusers)
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
data = json.loads(list(request.form.keys())[0])
username = data.get('username')
password = data.get('password')
name[0] = username
print(name)
same = False
for i in listusers:
if i[0] == username and i[1] == password:
same = True
break
if same:
return '200'
else:
return '400'
return render_template('login.html')
@app.route('/register', methods=['GET', 'POST'])
def register():
# print(f'data:{request}')
# print(f'method:{request.method}')
# print(f'form:{request.form}')
if request.method == 'POST':
# print(f'form:{request.form}')
# data = request.form
# print(f'data:{data}')
# print(f'json:{json.loads(list(request.form.keys())[0])}')
data = json.loads(list(request.form.keys())[0])
# print(f'form:{request.form.username}')
# userdata = request.form
username = data.get('username')
password = data.get('password')
user = [username,password,datetime.now().date()]
print(user)
same = False
for i in listusers:
if i[0] == username:
same = True
break
if same:
return '重复'
else:
listusers.append(user)
return '已注册'
else:
return render_template('register.html')
# @app.route('/register2', methods=['GET', 'POST'])
# def register2():
# print(f'data:{request}')
# print(f'method:{request.method}')
# print(f'form:{request.form}')
# if request.method == 'POST':
# # userdata = request.form
# print(f'data:{request}')
# return 'Registration successful'
if __name__ == '__main__':
app.run()
def page1():
return 0
步骤,创建虚拟环境,安装flask
编辑app.py
新建template文件夹
写入home.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>home</title>
<link rel="stylesheet" href="//unpkg.com/layui@2.6.8/dist/css/layui.css">
<script src="//unpkg.com/layui@2.6.8/dist/layui.js"></script>
<style>
#app{
width: 800px;
margin: 50px auto;
}
</style>
</head>
<body>
<div id="app">
<h2>欢迎:{{name}}</h2>
<table class="layui-table">
<colgroup>
<col width="150">
<col width="200">
<col>
</colgroup>
<thead>
<tr>
<th>用户名</th>
<th>密码</th>
<th>注册时间</th>
</tr>
</thead>
<tbody class="show">
{% for user in listusers %}
<tr>
<td>{{ user[0] }}</td>
<td>{{ user[1] }}</td>
<td>{{ user[2] }}</td>
</tr>
{% endfor %}
<!-- <tr>
<td>贤心</td>
<td>2016-11-29</td>
<td>人生就像是一场修行</td>
</tr>
<tr>
<td>许闲心</td>
<td>2016-11-28</td>
<td>于千万人之中遇见你所遇见的人,于千万年之中,时间的无涯的荒野里…</td>
</tr> -->
</tbody>
</table>
</div>
</body>
</html>
登录页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>登录</title>
<link rel="stylesheet" href="//unpkg.com/layui@2.6.8/dist/css/layui.css">
<script src="//unpkg.com/layui@2.6.8/dist/layui.js"></script>
<style>
#app{
width: 500px;
height: 500px;
margin: 100px auto;
}
</style>
</head>
<body>
<div id="app">
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">用户名</label>
<div class="layui-input-inline">
<input type="text" name="username" required lay-verify="required" placeholder="请输入用户名" autocomplete="off"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-inline">
<input type="password" name="password" required lay-verify="required" placeholder="请输入密码"
autocomplete="off" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<!-- <div class="layui-form-item">
<label class="layui-form-label">选择框</label>
<div class="layui-input-block">
<select name="city" lay-verify="required">
<option value=""></option>
<option value="0">北京</option>
<option value="1">上海</option>
<option value="2">广州</option>
<option value="3">深圳</option>
<option value="4">杭州</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">复选框</label>
<div class="layui-input-block">
<input type="checkbox" name="like[write]" title="写作">
<input type="checkbox" name="like[read]" title="阅读" checked>
<input type="checkbox" name="like[dai]" title="发呆">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">开关</label>
<div class="layui-input-block">
<input type="checkbox" name="switch" lay-skin="switch">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">单选框</label>
<div class="layui-input-block">
<input type="radio" name="sex" value="男" title="男">
<input type="radio" name="sex" value="女" title="女" checked>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">文本域</label>
<div class="layui-input-block">
<textarea name="desc" placeholder="请输入内容" class="layui-textarea"></textarea>
</div>
</div> -->
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="formDemo">登录</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
<a class="layui-btn layui-btn-primary" href="/">首页</a>
</div>
</div>
</form>
</div>
</body>
<script>
layui.use('form', function () {
var form = layui.form;
let $ = layui.$;
//监听提交
form.on('submit(formDemo)', function (data) {
// layer.msg(JSON.stringify(data.field));
// console.log(data)
// console.log(JSON.stringify(data.field))
$.ajax({
url: '/login', // 后端处理接口的 URL
method: 'POST',
data: JSON.stringify(data.field),
success: function (response) {
// 处理成功响应
console.log(response);
if(response=='200'){
layer.msg('登录成功');
setTimeout(() => {
window.location.href = "http://127.0.0.1:5000/home";
}, 1000);
}else if(response=='400'){
layer.msg('请先注册');
}
},
error: function (error) {
// 处理错误响应
console.log(response);
layer.msg(response);
}
});
return false;
});
});
</script>
</html>
注册页面,
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>注册</title>
<link rel="stylesheet" href="//unpkg.com/layui@2.6.8/dist/css/layui.css">
<script src="//unpkg.com/layui@2.6.8/dist/layui.js"></script>
<style>
#app{
width: 500px;
height: 500px;
margin: 100px auto;
}
</style>
</head>
<body>
<div id="app">
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">用户名</label>
<div class="layui-input-inline">
<input type="text" name="username" required lay-verify="required" placeholder="请输入用户名" autocomplete="off"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-inline">
<input type="password" name="password" required lay-verify="required" placeholder="请输入密码"
autocomplete="off" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<!-- <div class="layui-form-item">
<label class="layui-form-label">选择框</label>
<div class="layui-input-block">
<select name="city" lay-verify="required">
<option value=""></option>
<option value="0">北京</option>
<option value="1">上海</option>
<option value="2">广州</option>
<option value="3">深圳</option>
<option value="4">杭州</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">复选框</label>
<div class="layui-input-block">
<input type="checkbox" name="like[write]" title="写作">
<input type="checkbox" name="like[read]" title="阅读" checked>
<input type="checkbox" name="like[dai]" title="发呆">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">开关</label>
<div class="layui-input-block">
<input type="checkbox" name="switch" lay-skin="switch">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">单选框</label>
<div class="layui-input-block">
<input type="radio" name="sex" value="男" title="男">
<input type="radio" name="sex" value="女" title="女" checked>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">文本域</label>
<div class="layui-input-block">
<textarea name="desc" placeholder="请输入内容" class="layui-textarea"></textarea>
</div>
</div> -->
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn commit" lay-submit lay-filter="formDemo">注册</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
<a class="layui-btn layui-btn-primary" href="/">首页</a>
</div>
</div>
</form>
</div>
</body>
<script>
// console.log(layui,layer)
let $ = layui.$;
layui.use('form', function () {
var form = layui.form;
//监听提交
form.on('submit(formDemo)', function (data) {
// event.preventDefault();
// layer.msg(JSON.stringify(data.field));
console.log(JSON.stringify(data.field));
// console.log(data)
console.log(JSON.stringify(data.field))
layui.$.ajax({
url: '/register', // 后端处理接口的 URL
method: 'POST',
// data: data.field,
data: JSON.stringify(data.field),
success: function (response) {
// 处理成功响应
console.log(response);
layer.msg(response);
},
error: function (error) {
// 处理错误响应
console.error(error);
layer.msg(error);
}
});
return false;
});
});
// let oCommit = document.getElementsByClassName('commit')[0];
// oCommit.onclick = () => {
// layui.ajax({
// url: '/register2', // 后端处理接口的 URL
// method: 'POST',
// data: JSON.stringify(data.field),
// success: function (response) {
// // 处理成功响应
// console.log(response);
// layer.msg('数据提交成功');
// },
// error: function (error) {
// // 处理错误响应
// console.error(error);
// layer.msg('数据提交失败');
// }
// });
// }
</script>
</html>
切换登录注册页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="//unpkg.com/layui@2.6.8/dist/css/layui.css">
<script src="//unpkg.com/layui@2.6.8/dist/layui.js"></script>
<style>
#app{
width: 200px;
height: 100px;
margin: 100px auto;
}
</style>
</head>
<body>
<div id="app">
<a class="layui-btn layui-btn-primary" href="login">登录</a>
<a class="layui-btn layui-btn-primary" href="register">注册</a>
</div>
</body>
</html>
虚拟环境下运行
python app.py