flask框架实例

本文将指导如何使用Flask框架来创建一个包含导航栏、登录注册页面和主页的网站。用户仅在登录后可访问主页,而root用户具备查看及删除用户信息的权限。项目结构包括static目录用于存储静态文件,template目录则包含html模板。
摘要由CSDN通过智能技术生成

需求:

我们现在想要创建一个网站,有导航栏(如图)
在这里插入图片描述
同时做一个登陆界面、一个注册界面、一个主页。
要求登陆界面与注册界面可以互相转换、只有root用户可以查看并删除用户信息、用户只有登陆后才可以进入主页。

新建flask项目
如图:
在这里插入图片描述
其中,static目录中存放的是静态的文件;template目录中存放的是html文件。

app.py

from flask import Flask, render_template, request, redirect, url_for, flash, session
# render_template(.html)跳转到html页面
# request请求函数
# redirect(路又名)即可跳转到路由
# url_for(函数名)即可跳转到函数所在的路由
# flash是闪现
# 因为flask的session是通过加密之后放到了cookie中, 所以有加密就有密钥用于解密
# 所以只要用到了flask的session模块就一定要配置“SECRET_KEY”这个全局宏, 一般设置为24位的字符
from functools import wraps
from flask_bootstrap import Bootstrap

users = [
    {
        'username': 'root',
        'password': 'root'
    },
]

app = Flask(__name__)
app.config['SECRET_KEY'] = 'westos'
# 在接受flash消息时, 需要将消息内容保存在缓存中, 此处是为了进行加密
# 等号后的内容随意, 长度越长加密的越安全
bootstrap = Bootstrap(app)
# 导入bootstrap时, 实例化对象

def is_login(f):
    """装饰器: 用来判断用户是否登录成功"""
    @wraps(f)
    # 可以保留被装饰函数的函数名和帮助信息文档
    def wrapper(*args, **kwargs):
        # 判断session对象中是否有seesion['user']
        # 如果包含信息, 则登录成功, 可以访问主页
        # 如果不包含信息, 则未登录成功, 跳转到登录界面
        if session.get('user', None):
            return f(*args, **kwargs)
        else:
            flash("用户必须登录才能访问%s" % (f.__name__))
            return redirect(url_for('login'))
    return wrapper

def is_admin(f):
    """装饰器: 用来判断用户是否登录成功"""
    @wraps(f)
    # 可以保留被装饰函数的函数名和帮助信息文档
    def wrapper(*args, **kwargs):
        # 判断session对象中是否有seesion['user']等于root
        # 如果包含信息, 则登录成功, 可以访问主页
        # 如果不包含信息, 则未登录成功, 跳转到登录界面
        if session.get('user', None) == 'root':
            return f(*args, **kwargs)
        else:
            flash("只有管理员root才能访问%s" % (f.__name__))
            return redirect(url_for('login'))
    return wrapper

@app.route('/')
# 创建主页路由
@is_login
def index():
    return render_template('index.html')

@app.route('/register/', methods=['GET', 'POST'])
# 创建注册页面路由, 数据传输方法为GET/POST
def register():
    if request.method == 'POST':
    # 用POST方法保密性更强
        username = request.form.get("username", None)
        password = request.form.get('password', None)
        # 当所有的信息遍历结束, 都没有发现注册的用户存在
        # 则注册成功将注册的新用户信息添加到服务器, 并跳转到登录界面
        for user in users:
            if user['username'] == username:
                return render_template('register.html', 
                						message="用户%s已经存在" % (username))
        else:
            users.append(dict(username=username, password=passwo
  • 6
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值