Flask开发简易网站疑难点梳理

文章目录

  • 整体总结
  • 创建项目独立的python环境
    • windows下python独立环境目录结构
    • linux下python独立环境目录结构
  • 大概需要安装的第三方库
  • 使用websockt实现python代码与html界面的通讯
    • 界面F12中看到提示连接成功后立马连接关闭。
  • linux下数据库查询异常
  • 初次登录web的时候背景图片和css不起作用

整体总结

Flask是python的web框架, 首先python本身开发效率就高,再因为Flask是轻量级的,相比Django容易很多。

创建项目独立的python环境

部署python项目时减少依赖包遗漏的情况,使用venv模块为每个项目创建独立的python环境,实现依赖的隔离。
在工程目录下运行:(xxxxxx是运行环境目录)

python -m venv xxxxxx

windows下python独立环境目录结构

在这里插入图片描述
安装第三方python库和启动我们的python项目的时候都需要先启动python独立环境,运行:
./env/Scripts/activate.bat

linux下python独立环境目录结构

在这里插入图片描述
启动独立环境:

source ./env_linux/bin/activate
关闭独立环境:
deactivate

大概需要安装的第三方库

在这里插入图片描述

使用websockt实现python代码与html界面的通讯

python:

@sockets.route('/message')
def message(msg):
    # 1. 判断是否为Websocket请求,http不包含wsgi.websocket
    ws = request.environ.get('wsgi.websocket')
    if not ws:
        return 'need use websocket'
    # 此处连接成功
    dict_value={"msg":"xxxxxxx"}
    ws.send(json.dumps(dict_value))

html中js

//简化示例
var ws = null;
if ('WebSocket' in window) {
    ws = new WebSocket(url);
}
ws.onclose = function () {
//todo 连接关闭,处理如重连
};
ws.onerror = function () {
//todo
};

ws.onopen= function () {
//todo 连接成功
};

ws.onmessage = function (event) {
    var response = JSON.parse(event.data);
    //todo
};

界面F12中看到提示连接成功后立马连接关闭。

网上查是Flask版本过高引起的xxx不匹配问题。把Flask降低版本:

pip install Flask==1.1.2

linux下数据库查询异常

把db调用放到with app.app_context()里。


###flask和socket创建###
app = Flask(__name__,static_url_path="/static",static_folder="static",template_folder="templates")
app.secret_key = ';xxxxxxfsfs'
sockets = Sockets(app)
from flask_cors import *
CORS(app, supports_credentials=True)

###配置数据库
basedir = os.path.abspath(os.path.dirname(__file__))+"/static/db"
app.config["SQLALCHEMY_DATABASE_URI"] = 'sqlite:///'+os.path.join(basedir, 'xxxx.sqlite')
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
db = SQLAlchemy(app)

##数据库表1信息
class xxxxx(db.Model):
    id = db.Column(db.Integer,primary_key=True, autoincrement=True)
    msgType = db.Column(db.String(8))#最短是8否则建表不成功
    checkFrom = db.Column(db.String(16))
    date = db.Column(db.Integer)
    type = db.Column(db.Integer)
    def __repr__(self):
        return self.checkFrom+"_"+str(self.date)
##数据库表2信息
class yyyyy(db.Model):
    id = db.Column(db.Integer,primary_key=True, autoincrement=True)
    msgType = db.Column(db.String(8))#最短是8否则建表不成功
    checkFrom = db.Column(db.String(16))
    date = db.Column(db.Integer)
    type = db.Column(db.Integer)
    def __repr__(self):
        return self.checkFrom+"_"+str(self.date)
if __name__ == '__main__':
    with app.app_context():
        db.create_all()#统一建表

初次登录web的时候背景图片和css不起作用

F12查看有报错,提示重定向过多。
原因是如下代码有问题:下载static下的东西的时候被异常重定向到了login

@app.before_request
def before_reuqest():
    if request.path == '/login':
        return None
    if request.path == '/register':
        return None
    user_info = session.get('user_info')
    if user_info:
        return None
    return redirect('login')

修改成:

@app.before_request
def before_reuqest():
    if request.path == '/login':
        return None
    if request.path == '/register':
        return None
    user_info = session.get('user_info')
    if user_info:
        return None
    if request.path.startswith("/static"):#过滤掉static
        return None
    return redirect('login')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/27536.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智能指针(2)

智能指针(2) shared_ptr(共享型智能指针)基础知识特点引用计数器共享型智能指针结构理解 shared_ptr仿写删除器类计数器类shared_ptr类使用以及仿写代码的理解 循环引用_Weaks 初始化智能指针的方法 shared_ptr(共享型智能指针) 基础知识 在java中有一…

Hive | 报错锦集

知识目录 一、写在前面✨二、Hive启动hiveserver2报错🔥三、HiveServer2启动方式✨四、Hive执行SQL语句报一大堆日志🍉五、Hive使用Load加载数据报错🍭六、Hive执行含Count的SQL语句报错🍉七、Hive执行SQL语句报/bin/java&#x1…

openGauss5.0之学习环境 Docker安装

文章目录 0.前言1. 准备软硬件安装环境1.1 软硬件环境要求1.2 修改操作系统配置1.2.1 关闭操作系统防火墙 1.3 设置字符集参数1.4 设置时区和时间(可选)关闭swap交换内存1.5 关闭RemoveIPC1.6 关闭HISTORY记录 2. 容器安装2. 1支持的架构和操作系统版本2…

ChatGPT+小红书的8种高级玩法

掌握了这套万能命令,让你快速做出小红书爆款文案! 一、用ChatGPT做定位 我是一个大龄的普通人,没有什么特殊的技能,接下来,请你作为一位小红书的账号定位专家,通过与我对话的方式,为我找到我的小红书账号定…

记录一个Invalid bound statement (not found)问题

SpringBootMyBatisPlus项目&#xff0c;非常简单&#xff0c;没有任何业务逻辑&#xff1a; 1. pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.…

Java8 Stream详解及结束操作方法使用示例(三)

结束操作是指结束 Stream 该如何处理的操作&#xff0c;并且会触发 Stream 的执行。下面是一些常用的结束操作方法。结束操作会对数据源进行遍历&#xff0c;因此是及早求值的。 Java8 Stream详解及中间操作方法使用示例&#xff08;一&#xff09; ​​​​​​​Java8 Strea…

java生成、识别条形码和二维码

一、概述 使用 zxing 开源库 Zxing主要是Google出品的&#xff0c;用于识别一维码和二维码的第三方库主要类:BitMatrix 位图矩阵MultiFormatWriter 位图编写器MatrixToImageWriter 写入图片 可以生成、识别条形码和二维码 内置三种尺寸&#xff1a;enum Size {SMALL, MIDDLE, …

华为OD机试真题 JavaScript 实现【求符合要求的结对方式】【2023Q1 100分】,附详细解题思路

一、题目描述 用一个数组A代表程序员的工作能力&#xff0c;公司想通过结对编程的方式提高员工的能力&#xff0c;假设结对后的能力为两个员工的能力之和&#xff0c;求一共有多少种结对方式使结对后能力为N。 二、输入描述 6 2 3 3 4 5 1 6 第一行为员工的总人数&#xff…

计算机视觉-目标检测(一):从 R-CNN 到 Faster R-CNN

文章目录 1. 概要2. 区域卷积卷积神经网络R-CNN2.1 模型结构2.2 Selective Search2.3 warp2.4 R-CNN训练2.5 R-CNN推理2.6 R-CNN性能评价2.7 R-CNN的缺点 3. SPP-Net3.1 SPP-Net对RCNN的改进3.2 SPP-Net网络结构3.3 SPP-Net训练过程3.4 SPP-Net的问题 4. Fast R-CNN4.1 Fast R-…

河北沃克HEGERLS仓储货架生产厂家|夹抱式伸缩货叉四向穿梭车新型物流机器人

众所周知仓库作业主要是围绕存取、搬运、拣选、输送分拣而进行的&#xff0c;而随着物流作业的多样化、复杂化&#xff0c;四向穿梭车作为新的存储技术&#xff0c;以其灵活、柔性等特点而备受瞩目。河北沃克在成功研发四向穿梭车的基础上又对其进行了产品的横向发展。目前&…

微服务_fegin

Feign服务调用 是客户端组件 ruoyi系统中Log\Auth\User用了远程服务调用&#xff0c;用工厂模式给他的报错加了层工厂类&#xff0c;return错误的时候重写了以下方法。 在ruoyi-common-core模块中引入依赖 <!-- SpringCloud Openfeign --><dependency><group…

python语法-数据可视化(全球GDP动态柱状图开发)

python数据可视化&#xff08;全球GDP动态柱状图开发&#xff09; 开发工具&#xff1a;pycharm、pyecharts模块 &#xff08;项目数据见文末参考内容&#xff09; """ 演示GDP动态柱状图开发 """from pyecharts.charts import Bar,Timeline fr…

ExtractOfficeContent: 提取Office文件中文本、表格和图像

引言 最近有空写了一下这个库&#xff0c;用来提取Office文件中的文本和图像内容&#xff0c;用作后续整理训练语料使用。最新更新请移步&#xff1a;Github Extract Office Content Use Installextract_office_content$ pip install extract_office_contentRun by CLI. Ext…

数据可视化大屏人员停留系统的开发实录(默认加载条件筛选、单击加载、自动刷新加载、异步加载数据)

项目需求 录入进入房间的相关数据&#xff1b;从进入时间开始计时&#xff0c;计算滞留房间的时间&#xff1b;定时刷新数据&#xff0c;超过30分钟的人数&#xff0c;进行红色告警&#xff1b; 实现流程 为了完整地实现上述需求&#xff0c;我们可以按照以下步骤开发&#…

JAVA面向对象(三)

第三章 封装与继承 目录 第三章 封装与继承 1.1.封装 1.2.包 1.3.访问权限控制 1.4.static修饰符 1.4.1.成员变量 1.4.2.成员方法 1.4.3.代码块 总结 内容仅供学习交流&#xff0c;如有问题请留言或私信&#xff01;&#xff01;&#xff01;&#xff01;&#xff0…

【计算机组成与体系结构Ⅰ】知识点整理

第一章 计算机系统概论 1.1 从源文件到可执行文件 .c源程序、.i源程序、.s汇编语言程序、.o可重定位目标程序、可执行目标程序&#xff1b;后两个为二进制&#xff0c;前面为文本 1.2 可执行文件的启动和执行 冯诺依曼结构计算机模型的5大基本部件&#xff1a;运算器、控制…

技巧:win10的另一种美化字体的方式,使用noMeiryoUI

目录 1. 前提2. 字体选择3. 查看已经安装的字体并查看效果4. 安装软件修改系统字体5. 修改浏览器字体 1. 前提 21年的时候写了一篇文章&#xff0c;《Windows10下美化字体&#xff0c;达到类似mac的效果》&#xff0c;当时还很迷恋macType这个软件的使用&#xff0c;觉得好牛逼…

java异常 | 处理规范、全局异常、Error处理

文章目录 &#x1f683;异常类型&#x1f3a0;显示声明异常&#xff1a;①&#xff1a;try-catch②方法签名 &#x1f683;异常处理规范⚓️异常包装⚓️异常传递⚓️异常日志记录⚓️异常处理的最佳实践 &#x1f683;全局异常处理⛵️优点&#xff1a;⛵️代码示例&#xff1…

YOLOv7训练自定义数据集

使用YOLOv7做对比实验&#xff0c;需要重新部署一下YOLO环境&#xff0c;并将COCO格式数据集转换为YOLO格式 博主的COCO数据集是由WiderPerson数据集转换来的&#xff0c;并且做了一些处理。 环境 Ubuntu18.0 CUDA11.2 NVIDIA T4 项目部署 下载项目&#xff1a; git clone…

PureComponent和Component的区别和底层处理机制

PureComponent和Component都是React中的组件类&#xff0c;但它们在实现细节和使用上有些差别。 Component是React中定义组件的基类&#xff0c;它的shouldComponentUpdate方法默认返回true&#xff0c;也就是说&#xff0c;每次调用setState或forceUpdate方法都会引发组件重新…