下面我详细讲解一下该攻略。
用Python实现web端用户登录和注册功能的教程
什么是web端用户登录和注册功能
在一个基于web的应用程序中,用户登录和注册是非常常见的功能。用户登录指的是注册用户输入他们的用户名和密码,然后被应用程序验证以进入系统。用户注册是指一个未注册用户输入必要的信息,并在成功验证后创建一个新的帐户。
用到的技术
为了实现用户登录和注册,需要使用以下技术:
- Flask: 一个Python web框架,用于构建web应用程序。
- SQLAlchemy: 一个Python的SQL工具包,用于与数据库进行交互。
- WTForms: 一个用于创建web表单的Python库。
步骤
下面是实现web端用户登录和注册功能的攻略,包括以下步骤:
步骤1:安装必要的Python库
在命令行中运行以下命令以安装必要的Python库:
pip install flask sqlalchemy flask_sqlalchemy wtforms flask_wtf werkzeug
步骤2:创建Flask应用程序
在项目文件夹中创建一个名为app.py
的文件,并将以下代码复制到其中:
from flask import Flask, render_template, request, url_for, redirect, flash
from flask_sqlalchemy import SQLAlchemy
from werkzeug.security import generate_password_hash, check_password_hash
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import InputRequired, EqualTo, Length
app = Flask(__name__)
app.config['SECRET_KEY'] = 'thisisasecretkey'
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(15), unique=True)
email = db.Column(db.String(50), unique=True)
password = db.Column(db.String(80))
class RegisterForm(FlaskForm):
username = StringField('Username', validators=[InputRequired(), Length(min=4, max=15)])
email = StringField('Email', validators=[InputRequired(), Length(max=50)])
password = PasswordField('Password', validators=[InputRequired(), Length(min=8, max=80), EqualTo('confirm', message='Passwords must match')])
confirm = PasswordField('Confirm Password', validators=[InputRequired(), Length(min=8, max=80)])
submit = SubmitField('Register')
class LoginForm(FlaskForm):
username = StringField('Username', validators=[InputRequired(), Length(min=4, max=15)])
password = PasswordField('Password', validators=[InputRequired(), Length(min=8, max=80)])
submit = SubmitField('Login')
@app.route('/', methods=['GET', 'POST'])
def index():
register_form = RegisterForm()
login_form = LoginForm()
if request.method == 'POST' and register_form.validate_on_submit():
hashed_password = generate_password_hash(register_form.password.data, method='sha256')
new_user = User(username=register_form.username.data, email=register_form.email.data, password=hashed_password)
db.session.add(new_user)
db.session.commit()
flash('Your account has been created!', 'success')
if request.method == 'POST' and login_form.validate_on_submit():
user = User.query.filter_by(username=login_form.username.data).first()
if user and check_password_hash(user.password, login_form.password.data):
flash('You have been logged in!', 'success')
return redirect(url_for('dashboard'))
else:
flash('Invalid username or password.', 'danger')
return render_template('index.html', register_form=register_form, login_form=login_form)
@app.route('/dashboard')
def dashboard():
return 'This is the dashboard'
if __name__ == '__main__':
db.create_all()
app.run(debug=True)
步骤3:创建HTML模板
在项目文件夹中创建一个名为templates
的文件夹,并在其中创建一个名为index.html
的文件,并将以下代码复制到其中:
<!DOCTYPE html>
<html>
<head>
<title>Web Application Example</title>
</head>
<body>
<h1>Welcome to our web application</h1>
<h2>Register</h2>
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for message in messages %}
<div class="alert alert-{{ message[0] }}">{{ message[1] }}</div>
{% endfor %}
{% endif %}
{% endwith %}
<form method="POST" action="/">
{{ register_form.hidden_tag() }}
<div>
{{ register_form.username.label }} {{ register_form.username }}
</div>
<div>
{{ register_form.email.label }} {{ register_form.email }}
</div>
<div>
{{ register_form.password.label }} {{ register_form.password }}
</div>
<div>
{{ register_form.confirm.label }} {{ register_form.confirm }}
</div>
<div>
{{ register_form.submit }}
</div>
</form>
<h2>Login</h2>
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for message in messages %}
<div class="alert alert-{{ message[0] }}">{{ message[1] }}</div>
{% endfor %}
{% endif %}
{% endwith %}
<form method="POST" action="/">
{{ login_form.hidden_tag() }}
<div>
{{ login_form.username.label }} {{ login_form.username }}
</div>
<div>
{{ login_form.password.label }} {{ login_form.password }}
</div>
<div>
{{ login_form.submit }}
</div>
</form>
</body>
</html>
步骤4:启动应用程序
在命令行中运行以下命令以启动应用程序:
python app.py
现在你可以在网页浏览器中访问http://localhost:5000/
来测试Web应用程序了。包括用户注册和登录功能。
示例
下面是两个例子:
示例1:用户登录
假设你的用户名和密码是:username: alice
,password: password123
。那么你可以这么测试登录功能:
- 在首页的登录表单中输入你的用户名和密码。
- 点击“Login”按钮。
- 如果用户名和密码都正确,就会在页面中看到一个绿色的通知消息告诉你已经成功登录了。
- 点击页面上的“Dashboard”链接就可以进入用户的控制面板了。
示例2:用户注册
- 在首页的注册表单中输入一个新的用户名和电子邮件地址。
- 设置一个强密码并确认密码。
- 点击"Register"按钮。
- 如果你的用户名和电子邮件地址都是新的,那么就会在页面上看到一个绿色的通知消息告诉你账户已创建成功。
本攻略完结。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用Python实现web端用户登录和注册功能的教程 - Python技术站