写好了登录界面,怎么写后端登录验证,登陆后跳转到index.html我用的是pythonanywhere,怎么将登录验证代码链接到数据库,并且可以注册账号,,给出完整代码
时间: 2024-04-13 08:31:01 浏览: 16
下面是一个示例的完整代码,演示了如何在PythonAnywhere上实现登录验证、注册账号和跳转到index.html页面的功能。
首先,确保已经创建了数据库表格来存储用户账号和密码信息。假设数据库表格名为`users`,包含`id`、`username`和`password`字段。
```python
from flask import Flask, render_template, request, redirect, url_for, session
import mysql.connector
# 创建Flask应用
app = Flask(__name__)
app.secret_key = 'your-secret-key'
# 连接数据库
db = mysql.connector.connect(
host='your-host',
user='your-username',
password='your-password',
database='your-database'
)
cursor = db.cursor()
@app.route('/')
def index():
if 'username' not in session:
return redirect(url_for('login'))
else:
return render_template('index.html')
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form.get('username')
password = request.form.get('password')
# 查询数据库检查用户名和密码是否匹配
query = "SELECT * FROM users WHERE username=%s AND password=%s"
values = (username, password)
cursor.execute(query, values)
user = cursor.fetchone()
if user:
session['username'] = user[1]
return redirect(url_for('index'))
else:
return render_template('login.html', error='用户名或密码错误')
else:
return render_template('login.html')
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST':
username = request.form.get('username')
password = request.form.get('password')
# 检查用户名是否已存在
query = "SELECT * FROM users WHERE username=%s"
values = (username,)
cursor.execute(query, values)
user = cursor.fetchone()
if user:
return render_template('register.html', error='用户名已存在')
else:
# 插入新用户到数据库
query = "INSERT INTO users (username, password) VALUES (%s, %s)"
values = (username, password)
cursor.execute(query, values)
db.commit()
session['username'] = username
return redirect(url_for('index'))
else:
return render_template('register.html')
@app.route('/logout')
def logout():
session.pop('username', None)
return redirect(url_for('login'))
if __name__ == '__main__':
app.run()
```
请根据你的实际情况修改以下部分:
- 在`db = mysql.connector.connect()`这行代码中,填写你的数据库主机、用户名、密码和数据库名。
- 在`app.secret_key = 'your-secret-key'`这行代码中,填写一个用于加密会话数据的密钥。
同时,确保你的项目文件夹中包含以下模板文件:
- `login.html`:登录界面模板,包含一个表单用于输入用户名和密码。
- `register.html`:注册界面模板,包含一个表单用于输入新用户名和密码。
这样,当你在PythonAnywhere上运行这个应用程序时,它将提供一个完整的登录验证和注册账号功能,并在登录成功后跳转到index.html页面。