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

news2025/2/25 15:34:50

文章目录

  • 整体总结
  • 创建项目独立的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')

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ERP的需求分析(下)

目录 1、采购管理 2、生产订单模块 3、仓库管理 4、查询与分析

Golang处理内存溢出

背景: 最近系统在压测过程中发现主程序在并发增大后会出现主程序闪退现象,几经波折,认为有可能是内存溢出引起的 正好对 Golang 里分析 dump 这块还没怎么涉及,借此契机研究一下。 前言: 查看社区后,发现…

微信小程序原生开发功能合集十七:echarts使用及分享功能介绍

本章实现echarts的引入及使用,演示使用echarts创建界面图表。实现界面分享功能介绍,包括好友分享及朋友圈分享等。 echarts官网: https://echarts.apache.org/zh/index.html echarts-小程序: https://github.com/ecomfe/echarts-for-weixin   另外还提供小程序开发基础知…

APP外包开发的第三方代码库

在APP的开发过程中有很多好用的第三方库,这些第三方库代码质量高,已经在很多的项目实际使用过,因此在开发APP时是非常好的选择。第三方库可以减轻开发人员工作量,也是开发人员必须要关注的辅助代码。今天和大家分享一些常用的第三…

MATLAB 之 数据插值、曲线拟合和数值微分

这里写目录标题 一、数据插值1. 一维数据插值2. 二维数据插值 二、曲线拟合1. 曲线拟合原理2. 曲线拟合的实现 三、数值微分1. 数值差分与差商2. 数值微分的实现 一、数据插值 在工程测量和科学实验中,所得到的数据通常都是离散的。如果要得到这些离散点以外的其他…

python语言GDAL读取所在点的像素值

由于项目需求,需要用到开源的软件开发,就开始研究GDAL,这个开源库,目前来说,调用GDAL库,最方便的语言还是python ,简单记录下,用python语言做GDAL开发的一些东西吧。一个在开发中经常…

springboot集成springsecurity + jwt的使用

当项目中要用到用户的认证及权限的时候我们一般会使用 springSecurity来解决 引入 引入很简单 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId><version>5.4.2</ver…

华为OD机试真题 Java 实现【磁盘容量排序】【2022Q4 100分】,附详细解题思路

一、题目描述 磁盘的容量单位常用的有M&#xff0c;G&#xff0c;T这三个等级&#xff0c;它们之间的换算关系为1T 1024G&#xff0c;1G 1024M&#xff0c;现在给定n块磁盘的容量&#xff0c; 请对它们按从小到大的顺序进行稳定排序&#xff0c;例如给定5块盘的容量&#x…

Linux NGINX^Tomcat 负载均衡 动静分离集群

---------------------NginxTomcat负载均衡、动静分离------------------------- 由于NGINX静态页面处理能力强&#xff08;2-3w并发&#xff09;资源消耗低&#xff0c;但动态页面处理能力弱&#xff0c;所以将其与Apache结合&#xff0c;使用Apache的动态网页能力补足NGINX的…

哨兵2号(Sentinel-2)卫星数据批量处理

李国春 2021 10 11 哨兵2号&#xff08;Sentinel-2&#xff09;数据广受欢迎&#xff0c;数据质量好&#xff0c;还免费。人家欧空局有自己的处理软件&#xff0c;也有控制台命令行的批量处理。RSD也来凑凑热闹沾个光&#xff0c;指不定有人喜欢不同的操作风格&#xff0c;愿意…

毫米波雷达IWR1642和DCA1000 EVM环境搭建

本文以毫米波雷达IWR1642和DCA1000进行环境搭建以及数据采集。 介绍 mmWaveStudio GUI设计用于表征和评估TI Radar器械。mmWaveStudio通过SPI向mmWave设备发送命令来配置和控制mmWave设备。使用DCA 1000 EVM或TSW 1400 EVM板捕获ADC数据&#xff0c;并在Matlab中处理数据&…

RL - 强化学习 马尔可夫奖励过程 (MRP) 的状态价值

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/131084795 GitHub 源码: https://github.com/SpikeKing/Reinforcement-Learning-Algorithm 马尔可夫奖励过程 (MRP) 的状态价值是指在某…

【unity细节】Default constructor not found for type Player(找不到默认构造函数)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 秩沅 原创 收录于专栏&#xff1a;unity细节和bug ⭐Default constructor not found for type Player ⭐ 文章目录 ⭐Default const…

python爬虫入门,10分钟就够了,这可能是我见过最简单的基础教学

一、基础入门 1.1什么是爬虫 爬虫(spider&#xff0c;又网络爬虫)&#xff0c;是指向网站/网络发起请求&#xff0c;获取资源后分析并提取有用数据的程序。 从技术层面来说就是 通过程序模拟浏览器请求站点的行为&#xff0c;把站点返回的HTML代码/JSON数据/二进制数据&…

Fabric.js 使用自定义字体

theme: smartblue 本文简介 点赞 关注 收藏 学会了 如果你使用 Fabric.js 做编辑类的产品&#xff0c;有可能需要给用户配置字体。 这次就讲讲在 Fabric.js 中创建文本时怎么使用自定义字体、在项目运行时怎么修改字体、以及推荐一个精简字体库的工具。 学习本文前&#xff…

征稿|IJCAI‘23大模型论坛,DeepMind EleutherAI Oxford主题报告

第一届LLMIJCAI’23 Symposium征稿中&#xff0c;优秀投稿论文推荐《AI Open》&#xff08;EI检索&#xff09;和 《JCST》(CCF-B)发表。 大规模语言模型&#xff08;LLMs&#xff09;&#xff0c;如ChatGPT和GPT-4&#xff0c;以其在自然语言理解和生成方面的卓越能力&#xf…

调用腾讯API实现人脸美颜

目录 1. 作者介绍2. 人脸美颜基本原理2.1 获取人脸关键点信息2.2 基于皮肤区域的祛斑算法2.3 脸部器官美型处理2.4 美妆处理 3. 实验流程&#xff08;附代码&#xff09;及结果3.1 调用腾讯API流程3.2 安装依赖库3.3 代码实现3.4 实现结果 常见问题报错以及解决方案 1. 作者介绍…

【备战秋招】JAVA集合

集合 前言 一方面&#xff0c; 面向对象语言对事物的体现都是以对象的形式&#xff0c;为了方便对多个对象 的操作&#xff0c;就要 对对象进行存储。 另一方面&#xff0c;使用Array存储对象方面具有一些弊端&#xff0c;而Java 集合就像一种容器&#xff0c;可以动态地把多…

Towards Blockchain-Based Reputation-Aware Federated Learning

Towards Blockchain-Based Reputation-Aware Federated Learning FINE-GRAINED FEDERATED LEARNINGA. Problem StatementB. DefinitionC. Requirements BLOCKCHAIN-BASED REPUTATION-AWARE FL 论文地址&#xff1a;https://www.researchgate.net/profile/Muhammad-Habib-Ur-Reh…

ChatGPT中文版写日报神器【AI使用技巧】

写日报对于打工人来说是一件枯燥无味又不得不做的工作。有了ChatGPT写日报不再是一件苦差事&#xff0c;分分钟搞掂&#xff0c;你不来试一下吗&#xff1f; ChatGPT中文站https://ai-cn.co提问&#xff1a;我是一名服务端程序员&#xff0c;负责维护商城系统&#xff0c;帮我…