用python和flask写一个登陆注册页面并连接到sqlite3
时间: 2024-02-28 15:57:10 浏览: 92
好的,我可以帮你解决这个问题。首先,你需要安装Flask和SQLite3的Python库。你可以使用以下命令来安装它们:
```python
pip install flask
pip install sqlite3
```
接下来,你需要编写一个Flask应用程序。在你的项目文件夹中创建一个名为app.py的文件,然后添加以下代码:
```python
from flask import Flask, render_template, request, redirect, url_for
import sqlite3
app = Flask(__name__)
@app.route('/')
def home():
return render_template('home.html')
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
conn = sqlite3.connect('users.db')
c = conn.cursor()
c.execute('INSERT INTO users (username, password) VALUES (?, ?)', (username, password))
conn.commit()
conn.close()
return redirect(url_for('login'))
return render_template('register.html')
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
conn = sqlite3.connect('users.db')
c = conn.cursor()
c.execute('SELECT * FROM users WHERE username = ? AND password = ?', (username, password))
user = c.fetchone()
conn.close()
if user:
return render_template('success.html', username=username)
else:
return render_template('failure.html')
return render_template('login.html')
if __name__ == '__main__':
app.run(debug=True)
```
这个应用程序有三个路由:主页,注册和登录。当用户访问主页时,它会渲染一个HTML模板,显示应用程序的名称。当用户点击“注册”按钮时,应用程序将显示一个包含用户名和密码输入字段的表单。当用户提交表单时,应用程序将插入新用户记录到SQLite3数据库中。当用户点击“登录”按钮时,应用程序将显示一个包含用户名和密码输入字段的表单。当用户提交表单时,应用程序将查询数据库以查找匹配的用户名和密码。如果找到,则显示“success.html”模板,否则显示“failure.html”模板。
接下来,你需要创建相应的HTML模板。在你的项目文件夹中创建一个名为“templates”的文件夹,并在其中创建以下文件:
home.html:
```html
<!DOCTYPE html>
<html>
<head>
<title>Flask Login/Registration</title>
</head>
<body>
<h1>Welcome to Flask Login/Registration</h1>
<p><a href="{{ url_for('register') }}">Register</a> or <a href="{{ url_for('login') }}">Login</a></p>
</body>
</html>
```
register.html:
```html
<!DOCTYPE html>
<html>
<head>
<title>Register</title>
</head>
<body>
<h1>Register</h1>
<form method="POST">
<label>Username:</label>
<input type="text" name="username"><br>
<label>Password:</label>
<input type="password" name="password"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
```
login.html:
```html
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
</head>
<body>
<h1>Login</h1>
<form method="POST">
<label>Username:</label>
<input type="text" name="username"><br>
<label>Password:</label>
<input type="password" name="password"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
```
success.html:
```html
<!DOCTYPE html>
<html>
<head>
<title>Success</title>
</head>
<body>
<h1>Welcome, {{ username }}!</h1>
<p>You have successfully logged in.</p>
</body>
</html>
```
failure.html:
```html
<!DOCTYPE html>
<html>
<head>
<title>Failure</title>
</head>
<body>
<h1>Login Failed</h1>
<p>Please check your username and password and try again.</p>
</body>
</html>
```
最后,你需要创建一个SQLite3数据库,并创建一个名为“users”的表。在你的项目文件夹中打开一个终端窗口,然后运行以下命令:
```python
sqlite3 users.db
```
这将打开一个SQLite3 shell。在其中运行以下命令:
```sql
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL,
password TEXT NOT NULL
);
```
这将创建一个名为“users”的表,它有三个列:id、username和password。id列是一个自动增量的主键,username和password列是必填的文本列。
现在你可以运行你的Flask应用程序了。在终端窗口中运行以下命令:
```python
python app.py
```
这将启动Flask应用程序。在浏览器中访问“http://localhost:5000”即可看到你的应用程序。
阅读全文