Flask使用记录

Python Flask的日志记录与分析 在Flask应用开发中,日志记录是一项至关重要的功能。它不仅可以帮助开发者在开发过程中调试代码,定位问题,还能在应用上线后监控应用的运行状态,分析用户行为和系统性能。本文的目的是详细介绍Python Flask中日志记录的实现方法、配置技巧以及如何对日志进行有效的分析,范围涵盖从基础的日志记录配置到高级的日志分析技术。本文将按照以下结构进行阐述:首先介绍日志记录的核心概念和联系,让读者对日志记录有一个整体的认识; 阅读详情

关于FLASK框架的使用

使用pycharm创建工程

在默认的templates中新增模板页面

在默认的app.py中定义路由并引用模板

@app.route("/add", methods=["GET", "POST"])
def add():
    if request.method != 'POST':
        return render_template("login.html",info="请先登录系统")
    else:
     username = request.form.get('username') return render_template(
"add.html")

关于日志,可以使用FLASK自带的LOG模块

from flask import current_app

current_app.logger.info("登录用户名:" + account) 

 

 关于模板的使用

我创建了一个base.html基础模板用于继承

<!DOCTYPE html>
<html lang="en">
<head>
    {% block head %}
        <meta charset="UTF-8">
        <link rel="stylesheet" href="../static/css/page.css"/>
        <script type="text/javascript" src="../static/js/jquery.min.js"></script>
        <script type="text/javascript" src="../static/js/index.js"></script>
        <title>{% block title %}{% endblock %} - 操作平台</title>
    {% endblock %}
</head>
<body>
<div class="left">
    <div class="bigTitle">CA操作平台</div>
    <div class="lines">
        {% for menu in menu_list %}
            {% if choice==loop.index0 %}
                <div onclick="pageClick(this,{{ loop.index0 }})" class="active"><img
                        src="static/img/icon-{{ loop.index }}.png"/>
                    {{ menu }}
                </div>
            {% else %}
                <div onclick="pageClick(this,{{ loop.index0 }})"><img src="static/img/icon-{{ loop.index }}.png"/>
                    {{ menu }}
                </div>
            {% endif %}
        {% endfor %}
    </div>
</div>
<div class="top">
    <div class="leftTitle" id="flTitle">{{ menu_list[choice] }}</div>
    <div class="thisUser">{{ user_info }}</div>
</div>
<div class="main">
    <div class="mainForm">
        {% block content %}
            {% with messages = get_flashed_messages(with_categories=true) %} {# 对应:flash("请选择商品类型!", 'error') #}
                {% if messages %}
                    {% for category,message in messages %}
                        <span class={{ category }}>{{ message }}</span>
                    {% endfor %}
                {% else %}
                    &nbsp;
                {% endif %}
            {% endwith %}
        {% endblock %}
    </div>
</div>
<!--<div id="footer">-->
<!--{% block footer %}-->
    <!--&copy; Copyright 2008 by <a href="http://domain.invalid/">Keyba</a>.-->
    <!--{% endblock %}-->
<!--</div>-->
</body>
</html>

 

其它模板

 1 {% extends "base.html" %}
 2 {% block title %}
 3 {{ title }}
 4 {% endblock %}
 5 {% block content %}
 6 <div class="contentTitle">
 7     <span style="color: green; ">{{title}}</span>
 8     <table align="center">
 9         {% for row in rows %}
10         <tr>
11             {% for col in row %}
12             <td>{{col}}</td>
13             {% endfor %}
14         </tr>
15         {% endfor %}
16     </table>
17     <p align="center">
18         <input type="button" name="Submit" class="button button1" onclick="history.back();" value="返回">
19     </p>
20 </div>
21 {% endblock %}

 关于FORM

建立MyForm类,这里使用了DataRequired, Email, Length三种校验方式,这里的role(下拉列表SelectField)没有设置choices属性值是为了后面可以动态from flask_wtf import FlaskFormfrom wtforms import StringField, TextAreaField, SubmitField, SelectFieldfrom wtforms.validators import DataRequired, Email, Length

class MyForm(FlaskForm):
    new_user = StringField(label='新账号:', validators=[DataRequired("请输入新的后台账号"), Length(6, 20, '账号长度为6到20位')],
                           description="请输入新的后台账号", render_kw={"required": "required"})
    email = StringField(label='邮箱:', validators=[DataRequired("请输入邮箱"), Email('邮箱格式错误')], description="请输入邮箱",
                        render_kw={"required": "required"})
    role = SelectField(label='角色:')
    label = '用户类型:'
    user_type = RadioField(label=label)
    submit = SubmitField('注册后台账号', render_kw={"class": "button button1"})

配置路由,并更新role下拉列表的值

from forms import MyForm

app.config['SECRET_KEY'] = 'string' # 通过csrf @app.route('/add/', methods=("GET", "POST")) def add(): form = MyForm() # 这里的form只会进行一次赋值,POST请求过来时,不会更新,即可以重用。 roles_list = [(str(d.get('roleId')), str(d.get("roleName"))) for d in all_roles] oc_form.role.choices = roles_list # 这里我们对之前的role进行重新赋值 form.user_type.choices = (['1', '11'], ['2', '22']) form.user_type.default = '1' form.process() # 这里我们刷新form,以使用户类型这个radioButton更新 if request.method == 'POST' and form.validate_on_submit(): return render_template("success.html", title="新增用户成功") # return redirect(url_for('pageTo', page=1) return render_template('add.html', form=form)

对于多个提交的判断,我们可以这样写

add_user = SubmitField('注册', render_kw={"class": "button button1"})
auth_user = SubmitField('认证', render_kw={"class": "button button1"})
add_something = SubmitField('发布', render_kw={"class": "button button1"})

 

form = MallUserForm()
    if request.method == 'POST':
        if form.add_user.data:
            return add_mall_user(form)
        elif form.auth_user.data:
            return auth_user(form)
        elif form.add_something.data:
            if form.mall_type.data != 'None':
                return add_goods(form)
            else:
                flash("请选择商品类型!", 'error')
                return redirect(url_for('mall_index'))

 

HTML模板

<form name="baseForm" action="" role="form" method="post">
    <div class="contentTitle">后台账号操作</div>
    {% for item in form %}
        {% if item!=form.submit %}
            {% if item!=form.role %}
                <div>
                    {{ item.label }}{{ item(size=20) }} <!-- 定义size -->
                </div>
            {% else %}
                    {{ item.label }}{{ item }} <!-- 下拉列表框 -->
            {% endif %}
        {% else %}
            <div class="center">
                {{ item }} <!-- 提交按钮 -->
            </div>
        {% endif %}
    {% endfor %}
</form>

 

从零到一:STM32CubeMX虚拟串口开发中的常见陷阱与优化策略 本文深入探讨了STM32CubeMX在USB虚拟串口开发中的常见问题与优化策略,涵盖数据流吞吐量瓶颈、实时性约束等核心挑战。通过实战案例和代码示例,详细解析了波特率同步异常、数据丢失等问题的解决方案,并提供了DMA配置和中断优先级调优的高级技巧,帮助开发者提升STM32虚拟串口的性能和可靠性。 阅读详情

相关推荐

【若依(ruoyi)】BootstrapTable列宽定制实战:突破width属性限制的两种方案

本文针对若依(RuoYi)框架中BootstrapTable组件列宽设置失效的常见问题,提供了两种实战解决方案。通过CSS样式覆盖法强制定义列宽,或利用formatter函数进行动态HTML包裹,有效突破width属性限制,实现精准的表格列宽定制。

weixin_29013129的博客 170

wtforms.validators.ValidationError

今天在对上传文件进行验证的时候,突然报如下错误: 然后对验证器查看 ,原来是表单验证器中加了点。 解决办法:去掉红框中的点号即可

阿汤哥 1140

[全志T113]:ST7701 86屏幕驱动

[全志T113]:ST7701 86屏幕驱动

LINKKEEE的博客 3132

WTForm Validators简单学习

本文只是个人学习所做,有些地方根据英语来不是很通顺,想看原文,请参考  Validators Validators简介 Validators是一个可以很轻松的实现诸如输入字符长度等的验证器,当验证失败的时候调用ValidationError。这个模块非常的简单、灵活,并且允许你在filed中添加任意多个验证器。   当验证失败的时候将会调用ValidationError,

floatot的专栏 3824

【自动驾驶规划】Lattice Planner

Lattice Planner简介 LatticePlanner算法属于一种局部轨迹规划器,输出轨迹将直接输入到控制器,由控制器完成对局部轨迹的跟踪控制。因此,Lattice Planner输出的轨迹是一条光滑无碰撞满足车辆运动学约束和速度约束的平稳安全的局部轨迹。Lattice Planner的输入端主要由三部分组成,感知及障碍物信息、参考线信息及定位信息。局部规划模块的输出是带有速度信息的一系列轨迹点组成的轨迹,其保证了车辆控制器在车辆跟踪控制过程中的平稳性和安全性。 局部规划模块的输出是带有速

uytguytgf的博客 6487

保姆级教程:用中移ML307模组对接高德/OneOS定位服务,从配置apikey到解析+MLBSLOC状态码

本文详细介绍了如何使用中移ML307系列模组对接高德/OneOS定位服务,从配置apikey到解析+MLBSLOC状态码的全过程。涵盖高德定位服务和OneOS定位服务的配置步骤、常见错误处理及性能优化技巧,帮助开发者快速实现基站定位功能,提升物联网项目的定位精度和稳定性。

weixin_30632089的博客 497

在Flask中实现日志记录

你可以通过创建Formatter对象来自定义日志消息的格式。Formatter的构造器接受一个格式字符串,该字符串定义了日志消息的最终格式。在上述格式字符串中,%(name)s和是预定义的占位符,分别代表日志消息的时间戳、记录器名称、日志级别和日志消息本身。

sheji888的专栏 1933

AI赋能软件测试:从冒烟测试到全流程智能化的效率革命

软件测试是确保软件质量的关键环节,其核心原理是通过预设用例验证系统功能是否符合预期。传统测试方法依赖人工编写和维护脚本,面临维护成本高、适应性差等挑战。随着人工智能技术的发展,特别是自然语言处理和计算机视觉的成熟,AI为测试领域带来了新的技术价值。通过让AI理解应用界面和业务逻辑,可以实现测试用例的智能生成、自主执行和结果分析,显著提升测试效率和覆盖率。在实际应用场景中,AI驱动的冒烟测试能够动态适应UI变化,自动分析失败日志,将测试人员从重复劳动中解放出来,专注于更复杂的质量策略设计。本文基于AI在冒烟测

weixin_28841265的博客 300

当我们在使用Flask时,如何记录日志

我们在开发基于Flask的Web应用时,往往容易忽略了对日志的使用,而在Flask的官方文档中,对日志这块的介绍也仅仅停留在如何与系统集成上。记录日志这个看似很简单的事情,在实际中很多人却不一定能做好,要么不知道何时进行日志记录,要么就是记录的日志然并卵。所以,今天就来说说记录日志这件小事。说它是件小事,因为它的确不会影响你系统的正常流程,有没有它系统都能跑起来,也正因为这样,很多人便忽略了日志的处

于振 3万+

网络安全系列-四十三:使用Suricata分析恶意流量pcap文件

本文基于[网络安全系列-三十六:使用Suricata IDS分析pcap文件]和 [网络安全系列-四十二: Suricata之rulesets的激活、更新及动态加载]的基础上,使用suricata针对包含恶意流量的pcap文件进行分析,触发事件告警,并对suricata输出的日志进行逐个分析,让你掌握针对恶意流量的分析步骤,及怎么查看suricata输出的日志。

penriver的博客 2875

PD详解 扩展消息——Source_Capabilities_Extended Message

PD的协议层分为控制消息,数据消息还有扩展消息,今天大师匈讲一下扩展消息中的source_cap_extended。这个消息在扩展消息中算是比较关键的东西。 扩展消息中的source_cap_extended 大师匈先上图,然后逐一解释; 上面的图表说了source_cap_ext中包含了哪些内容。 我们注意到在source_cap扩展消息中是以字节为单位的,并不是像source_cap中以一个object为单位,当然有注意到PD标准spec中说明的扩展消息的话,那里有说明,在header之后的字节

大师匈的博客 3512

Flask SQLAlchemy增加记录

首先,你需要定义一个模型,它对应于数据库中的一个表。这个模型将定义表的结构,包括列名和每列的数据类型。python。

Flask Web 720

30、电力生产系统中的效率测量

本文探讨了如何使用数据包络分析(DEA)模型来评估电力生产系统的效率。文章详细介绍了电力生产系统的三个主要环节——发电、输电和配电,并通过多种DEA模型,如输入导向模型、输出导向模型以及基于松弛的SBM模型,展示了效率测量的方法和技术。同时,结合实际案例分析,说明了DEA模型在识别效率低下环节及提出改进建议方面的应用价值。

rgv2345678的博客 114

Flask SQLAlchemy更新记录

Flask Web 应用开发项目实战 基于 Python 和统信 UOS》作为一本深入介绍Flask框架与统信UOS操作系统结合应用的书籍,为开发者提供了丰富的理论知识与实践案例。因此,《Flask Web 应用开发项目实战 基于 Python 和统信 UOS》配套计算机操作指南应运而生,旨在为读者提供一条清晰、顺畅的学习路径,确保每位读者都能顺利上手并成功运行Flask项目。然后,你就可以使用上述方法来更新数据库中的记录了。一旦你有了记录的实例,你就可以修改它的属性来更新数据。

Flask Web 913

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Flask SQLAlchemy查询记录

Flask Web 应用开发项目实战 基于 Python 和统信 UOS》作为一本深入介绍Flask框架与统信UOS操作系统结合应用的书籍,为开发者提供了丰富的理论知识与实践案例。因此,《Flask Web 应用开发项目实战 基于 Python 和统信 UOS》配套计算机操作指南应运而生,旨在为读者提供一条清晰、顺畅的学习路径,确保每位读者都能顺利上手并成功运行Flask项目。这将返回User表中username列值包含doe的前10条记录,并按照username列的值进行排序。3. 使用过滤器查询。

Flask Web 1094

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Flask SQLAlchemy删除记录

因此,《Flask Web 应用开发项目实战 基于 Python 和统信 UOS》配套计算机操作指南应运而生,旨在为读者提供一条清晰、顺畅的学习路径,确保每位读者都能顺利上手并成功运行Flask项目。此外,如果你在删除过程中遇到任何错误,比如违反数据库约束,你应该捕获这些异常并适当地处理它们,比如回滚会话并向用户显示一个错误消息。一旦你有了记录的实例或查询结果,你可以使用db.session.delete()来删除它。使用db.session.commit()来提交你的更改,这将从数据库中删除记录。

Flask Web 832

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Flask实现高效日志记录模块

在Flask应用中,日志记录是重要的功能之一,它可以帮助开发人员跟踪请求的处理情况,快速定位错误,并且有助于应用的监控与调试。本文将介绍如何在Flask应用中实现请求日志记录,包括如何记录请求的各种信息(如请求数据、响应数据、错误信息等)并将其保存到数据库中。我们还会演示如何捕获不同级别的日志(信息级别、错误级别),并讨论如何处理复杂的响应数据(如流式响应)。

m0_56659620的博客 1739

Flask中使用logging记录日志信息

Flask中使用logging记录日志信息原文地址:Flask中使用logging记录日志信息

wwwcomcn123的专栏 995

如何优雅的在flask中记录log

背景 记录日志,在任何项目中,都是很重要的。在Flask项目中,即有Flask提供的logger可以用来记录log,也可以通过直接使用Python的logging模块自定义logger来记录。那么这两者是什么关系,又该怎么使用呢? 思路 Python的logging模块 先看下对于logging模块的官方介绍 Loggers have...

weixin_34148508的博客 831

Flask日志使用记录

Flask日志使用记录 基础与python标准库logging 官网 日志库采用模块化方法,并提供几类组件:记录器、处理程序、过滤器和格式化程序 基本步骤 # 1.实例化 Logging类 logger = logging.getLogger(__name__) # 2.记录器 Logger.setLevel() 设置日志等级 logger.setLevel(logging.INFO) # 3.自定义格式化formatter formatter = logging.Formatter('%(a

憧憬001-的博客 1030

基于Flask的优雅日志记录

目录前言Logging日记级别配置改造初始化配置添加配置打印日志请求日志拦截 前言 在之前的文章中我们讲过Flask项目的创建和Flask项目的部署。但在实际项目的运行中,少补了会发生一些我们无法预知的错误。而这个时候日志的输出就发挥着重要的左右。本文将基于Flask服务对日志格式就行修改,并按日期作为文件名进行本地化存储。 Logging 讲到日志,我们总不能每一次都print()这么low的对吧?所以这里先介绍一下logging模块。它提供一套完成的日志API,可以完美与我们的Flask服务契合。 日记

turkeym4的博客 1万+

Flask中使用Mysql的几点记录 / flask-sqlalchemy

用flask搭网站数据库连了好久总报错,最后分别解决,在这记录一下。 首先mysql数据库的密码的修改,在忘记原密码的情况下 http://jingyan.baidu.com/article/454316ab4e9e65f7a7c03ad1.html 这个方法非常好使,注意在执行mysqld --skip-grant-tables命令前一定要先在任务管理器中结束mysqld.exe进程,

u010271717的专栏 2689

python flask redis储存浏览记录

用户进入详情页,在详情页加载的同时,把该商品加进redis,以用户id做不同用户浏览记录区分,最后再获取。 获取redis链接: REDIS_DB_URL = { 'host': '127.0.0.1', 'port': 6379, 'password': '', 'db': 0 } def connect_redis():...

qq_44927883的博客 607

当我们在使用Flask时,如何如记录日志

我们在开发基于Flask的Web应用时,往往容易忽略了对日志的使用,而在Flask的官方文档中,对日志这块的介绍也仅仅停留在如何与系统集成上。记录日志这个看似很简单的事情,在实际中很多人却不一定能做好,要么不知道何时进行日志记录,要么就是记录的日志然并卵。所以,今天就来说说记录日志这件小事。 说它是件小事,因为它的确不会影响你系统的正常流程,有没有它系统都能跑起来,也正因为这样,很多人便忽略了日...

qq_37816453的博客 3650

Flask Web应用开发——个人财务记录

这次我们将创建一个简易的“个人财务记录”Web应用,允许用户添加收入或支出记录,并查看所有记录的概览。这个示例将展示如何使用Python(Flask)作为后端服务,HTML、CSS(通过Bootstrap进行样式设计)、JavaScript和jQuery实现前端交互。

Flask Web 1166

Flask 日志记录

Flask 日志记录 - 示例代码一 - 示例代码二 Flask 日志记录 最近项目需要用到flask日志模块来记录日志,这里做下记录: - 示例代码一 from flask import Flask import logging app = Flask(__name__) # 日志系统配置 handler = logging.FileHandler('app.log

不知火猪 7479
上一篇: 迁移virtualenv环境
下一篇: java集合类,HashMap,ArrayList
liehen2046
博客等级 码龄18年 11粉丝 147原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值