python连接数据库的用户登陆注册页面
时间: 2023-11-06 19:00:53 浏览: 40
以下是一个基于Python Flask框架的用户登陆注册页面的示例:
1. 首先需要在Flask中安装`flask-mysql`模块,用于连接MySQL数据库。
```
pip install flask-mysql
```
2. 在Flask应用中导入`flask`和`flask-mysql`模块,并配置数据库连接信息。
```python
from flask import Flask, render_template, request, redirect, session
from flaskext.mysql import MySQL
app = Flask(__name__)
app.secret_key = 'mysecretkey'
mysql = MySQL()
app.config['MYSQL_DATABASE_USER'] = 'your_username'
app.config['MYSQL_DATABASE_PASSWORD'] = 'your_password'
app.config['MYSQL_DATABASE_DB'] = 'your_database_name'
app.config['MYSQL_DATABASE_HOST'] = 'localhost'
mysql.init_app(app)
```
3. 定义用户登陆和注册页面的路由函数,并编写相应的HTML模板。
```python
@app.route('/', methods=['GET', 'POST'])
def login():
if request.method == 'POST' and 'username' in request.form and 'password' in request.form:
username = request.form['username']
password = request.form['password']
cursor = mysql.get_db().cursor()
cursor.execute('SELECT * FROM users WHERE username = %s AND password = %s', (username, password))
user = cursor.fetchone()
if user:
session['loggedin'] = True
session['id'] = user[0]
session['username'] = user[1]
return redirect('/home')
else:
return render_template('login.html', error='Invalid username or password')
return render_template('login.html')
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST' and 'username' in request.form and 'password' in request.form and 'email' in request.form:
username = request.form['username']
password = request.form['password']
email = request.form['email']
cursor = mysql.get_db().cursor()
cursor.execute('INSERT INTO users VALUES (NULL, %s, %s, %s)', (username, password, email))
mysql.get_db().commit()
return redirect('/')
return render_template('register.html')
```
4. 在HTML模板中编写用户登陆和注册页面的表单。
```html
<!-- login.html -->
{% if error %}
<div class="alert alert-danger">{{ error }}</div>
{% endif %}
<form method="post">
<div class="form-group">
<label>Username:</label>
<input type="text" name="username" class="form-control">
</div>
<div class="form-group">
<label>Password:</label>
<input type="password" name="password" class="form-control">
</div>
<button type="submit" class="btn btn-primary">Login</button>
</form>
<!-- register.html -->
<form method="post">
<div class="form-group">
<label>Username:</label>
<input type="text" name="username" class="form-control">
</div>
<div class="form-group">
<label>Password:</label>
<input type="password" name="password" class="form-control">
</div>
<div class="form-group">
<label>Email:</label>
<input type="email" name="email" class="form-control">
</div>
<button type="submit" class="btn btn-primary">Register</button>
</form>
```
5. 最后是用户登陆后的主页路由函数和HTML模板。
```python
@app.route('/home')
def home():
if 'loggedin' in session:
return render_template('home.html', username=session['username'])
return redirect('/')
@app.route('/logout')
def logout():
session.pop('loggedin', None)
session.pop('id', None)
session.pop('username', None)
return redirect('/')
```
```html
<!-- home.html -->
<h1>Welcome, {{ username }}!</h1>
<a href="/logout">Logout</a>
```
以上就是一个简单的Python连接数据库的用户登陆注册页面的示例。注意:本示例只是为了演示基本的用户登陆注册功能,实际应用中需要考虑更多的安全性和用户体验问题。