欢迎访问宙启技术站
智能推送

用Python编写一个简单的网站登录功能

发布时间:2023-12-04 13:17:20

要实现一个简单的网站登录功能,可以使用Python编写一个基于Flask框架的网站。下面是一个示例,包括创建登录页面、处理登录请求和验证用户信息的功能。

首先,需要安装Flask库,可以使用以下命令:

pip install flask

然后,创建一个Python文件,例如login.py,并使用以下代码导入必要的模块:

from flask import Flask, render_template, request, redirect, url_for

接下来,创建Flask应用:

app = Flask(__name__)

创建登录页面的路由,使用render_template函数渲染页面模板:

@app.route('/')
def login():
    return render_template('login.html')

创建处理登录请求的路由。在这个例子中,用户名和密码是硬编码的。可以根据实际情况将用户名和密码存储在数据库中,并与用户输入的信息进行比较。

@app.route('/login', methods=['POST'])
def login_post():
    username = request.form['username']
    password = request.form['password']

    if username == 'admin' and password == 'password':
        # 登录成功,重定向到欢迎页面
        return redirect(url_for('welcome'))
    else:
        # 登录失败,重定向到登录页面,并显示错误消息
        return redirect(url_for('login', error='登录失败,请重试!'))

创建欢迎页面的路由,这是一个需要登录才能访问的页面:

@app.route('/welcome')
def welcome():
    return render_template('welcome.html')

创建一个全局错误处理的路由,用于处理登录失败时的错误消息:

@app.errorhandler(404)
def page_not_found(error):
    return render_template('login.html', error=error.description)

最后,运行应用:

if __name__ == '__main__':
    app.run(debug=True)

在同级目录下创建templates文件夹,并在该文件夹中创建以下文件:login.htmlwelcome.html

login.html是一个简单的登录表单:

<!DOCTYPE html>
<html>
<head>
    <title>Login</title>
</head>
<body>
    <h1>Login</h1>
    {% if error %}
        <p style="color: red;">{{ error }}</p>
    {% endif %}
    <form action="/login" method="post">
        <input type="text" name="username" placeholder="Username">
        <br>
        <input type="password" name="password" placeholder="Password">
        <br>
        <input type="submit" value="Login">
    </form>
</body>
</html>

welcome.html是登录成功后的欢迎页面:

<!DOCTYPE html>
<html>
<head>
    <title>Welcome</title>
</head>
<body>
    <h1>Welcome!</h1>
    <p>You are now logged in.</p>
</body>
</html>

现在,可以运行login.py文件,并访问http://localhost:5000来测试登录功能。输入用户名为admin,密码为password,点击登录按钮。如果用户名和密码正确,将跳转到欢迎页面。如果用户名或密码错误,将返回登录页面并显示错误消息。

这只是一个简单的网站登录功能示例,可以根据需求进行扩展和改进。