当前位置:首页 » 《随便一记》 » 正文

Flask 实现用户登录功能的完整示例:前端与后端整合(附Demo)

13 人参与  2024年10月12日 19:20  分类 : 《随便一记》  评论

点击全文阅读


目录

前言Demo

前言

对于python用户的登录,以下只是提供一个Demo用于学习

更多的python知识点可从我的专栏中进行学习

python专栏详细分析Flask中的蓝图Blueprint(附Demo)详细分析Flask部署云服务器(图文介绍)构建Flask前后端不分离项目(附Python Demo)

Demo

项目结构:

/project-directory    /templates        login.html    app.py

前端登录页面:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Login</title>    <style>        body {            font-family: Arial, sans-serif;            background-color: #f4f4f4;        }        .container {            width: 300px;            margin: 100px auto;            padding: 20px;            background-color: white;            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);        }        h2 {            text-align: center;        }        .form-group {            margin-bottom: 15px;        }        .form-group label {            display: block;        }        .form-group input {            width: 100%;            padding: 8px;            box-sizing: border-box;        }        .form-group button {            width: 100%;            padding: 10px;            background-color: #5cb85c;            color: white;            border: none;            cursor: pointer;        }        .error {            color: red;            text-align: center;        }    </style></head><body>    <div class="container">        <h2>Login</h2>        <form method="POST" action="/login">            <div class="form-group">                <label for="username">Username</label>                <input type="text" id="username" name="username" required>            </div>            <div class="form-group">                <label for="password">Password</label>                <input type="password" id="password" name="password" required>            </div>            {% if error %}                <p class="error">{{ error }}</p>            {% endif %}            <div class="form-group">                <button type="submit">Login</button>            </div>        </form>    </div></body></html>

后端应用:

from flask import Flask, render_template, request, redirect, url_for, flash, sessionapp = Flask(__name__)app.secret_key = 'your_secret_key'  # 用于会话加密,可以换成自己的密钥# 假设的用户数据,实际应用应从数据库中获取users = {    'admin': '123456',    'ma': 'nong'}@app.route('/')def index():    if 'username' in session:        return f'Logged in as {session["username"]}. <a href="/logout">Logout</a>'    return redirect(url_for('login'))@app.route('/login', methods=['GET', 'POST'])def login():    if request.method == 'POST':        username = request.form['username']        password = request.form['password']        # 检查用户名和密码        if username in users and users[username] == password:            session['username'] = username            return redirect(url_for('index'))        else:            error = 'Invalid username or password.'            return render_template('login.html', error=error)    return render_template('login.html')@app.route('/logout')def logout():    session.pop('username', None)    return redirect(url_for('login'))if __name__ == '__main__':    app.run(debug=True)

账号和密码分别是这两个

账号:admin,密码: 123456账号:ma ,密码:nong

登录成功后:

在这里插入图片描述

包括登录失败 以及 字段没有输入的捕捉情况:

在这里插入图片描述


点击全文阅读


本文链接:http://zhangshiyu.com/post/171167.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1