python实现登录注册页面
时间: 2023-10-05 09:04:33 浏览: 36
下面是一个简单的Python登录注册页面的实现,使用了Flask框架和SQLAlchemy库:
```python
from flask import Flask, render_template, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
password = db.Column(db.String(80), nullable=False)
def __repr__(self):
return f'<User {self.username}>'
@app.route('/')
def index():
return render_template('index.html')
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
user = User(username=username, password=password)
db.session.add(user)
db.session.commit()
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']
user = User.query.filter_by(username=username, password=password).first()
if user:
return redirect(url_for('index'))
else:
return render_template('login.html', error='Invalid username or password')
return render_template('login.html')
if __name__ == '__main__':
app.run(debug=True)
```
其中,`User`类定义了一个用户,包括ID、用户名和密码。`db`对象初始化了一个SQLite数据库,并将其绑定到应用程序中。
`index()`函数渲染主页模板。
`register()`函数处理注册请求。如果请求是POST类型,它将从表单中获取用户名和密码,并创建一个新用户。然后将其添加到数据库中,并重定向到登录页面。如果请求是GET类型,它将渲染注册页面模板。
`login()`函数处理登录请求。如果请求是POST类型,它将从表单中获取用户名和密码,并在数据库中查找相应的用户。如果找到了用户,它将重定向到主页,否则将渲染登录页面模板,并显示错误消息。
最后,如果应用程序是直接运行的,则调用`app.run()`函数启动Web服务器。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)