Flask初级项目

Python框架Flask系列教程(1)——基础-黄勇-专题视频课程 从初级讲解Flask开发网站。涉及到的知识点包括:URL和视图、Jinja2模版、SQLAlchemy数据库、session和cookie操作、以及一些常用的钩子函数。后还会有一个仿知乎的问答平台的实战项目。干货多多,不容错过~~... 阅读详情

项目结构

目录结构

blog/					# 项目根目录
	manage.py				# 启动控制代码
	requirements.txt		# 依赖包类表文件
	migrations/				# 数据库迁移目录
	tests/					# 测试模块目录
	app/					# 整个程序目录
		templates/				# 模板文件目录
			common/					# 通用模板
			email/					# 邮件模板
			。。。
		static/					# 静态文件目录
			img/
			css/
			js/
			favicon.ico
		views/					# 蓝本文件目录
		models.py				# 数据模型文件
		forms.py				# 表单类文件
		settings.py				# 配置文件
		extensions.py			# 扩展文件(存放所有扩展)
		email.py				# 邮件发送功能函数
		__init__.py				# 包文件

项目准备

  • 根据目录结构,创建相关目录及文件
  • 书写配置文件(就是书写各种环境的配置类)
  • 使用工厂方法创建应用实例,并初始化配置
  • 添加各种扩展(顺便粘贴邮件发送函数)
  • 配置蓝本(添加各种蓝本文件,并注册)
用户登录退出(flask-login)
  • 说明:flask-login是一个专门用来管理用户登录退出的扩展库

  • 安装:pip install flask-login

  • 使用:

    # 第一步:添加扩展
    from flask_login import LoginManager
    
    login_manager = LoginManager()
    
    def config_extensions(app):
        ...
        login_manager.init_app(app)
        # 设置登录端点
        login_manager.login_view = 'user.login'
        # 设置登录信息
        login_manager.login_message = '请先登录,然后才能访问'
        
        
    # 第二步:继承自UserMixin类(也可以自己实现相关方法)
    from flask_login import UserMixin
    
    class User(UserMixin, db.Model):
      	...
        
    # 第三步:实现回调  
    @login_manager.user_loader
    def load_user(uid):
        return User.query.get(uid)
    
  • 总结

    状态切换:
    	login_user		# 可以提供记住我的功能
    	logout_user     # 退出登录
    状态查询:
    	is_authenticated	登录状态
    	is_anonymous		匿名状态
    路由保护:
    	login_required		# 保护需要登录才能访问的路由
    当前用户:
    	current_user		# 哪里都可以使用,在模板中不需要分配
    

项目部署

nginx服务器

  • 安装:sudo apt install nginx

  • 说明:简单使用nginx

  • 添加虚拟主机:

    • 在/etc/nginx/sites-available下创建虚拟主机配置文件www.bbs.com,内容如下:
    server {
      	listen	80;
      	server_name www.bbs.com bbs.com;
      	
      	location / {
         	root /var/www/blog;
            index index.html;
      	}
    }
    
    • 创建软链接:在sites-enabled下创建
    sudo ln -s /etc/nginx/sites-available/www.bbs.com /etc/nginx/sites-enabled/www.bbs.com
    
    • 重启nginx服务
    • 创建目录:/var/www/bbs
    • 在/var/www/bbs下创建文件index.html
    • 添加本地域名解析(劫持),修改配置文件:/etc/hosts,在末尾添加:
    127.0.0.1	www.bbs.com
    127.0.0.1	bbs.com
    

Flask项目

  • 说明:将flask项目拷贝到/var/www/bbs目录下

uWSGI

  • 说明:uWSGI是实现了WSGI协议的应用程序。

  • 安装:pip3 install uwsgi

  • 配置:

    http				# 以http协议启动
    socket				# 以socket方式启动
    chdir				# uwsgi启动的项目的根目录
    wsgi-file			# 数据交给哪个模块处理
    callable			# 具体可调用的对象
    daemonize			# 后台运行(需要指定一个日志文件)
    processes			# 指定使用的进程数
    threads				# 指定使用的线程数
    
  • 启动演示(以http协议启动)

    uwsgi --http 127.0.0.1:5000 --wsgi-file manage.py --callable app
    
  • socket方式启动

    • 需要nginx转发请求
    server {
      	listen	80;
      	server_name www.bbs.com bbs.com;
      	
      	location / {
        	# 包含请求参数
         	include uwsgi_params;
        	# 以socket方式转发请求
         	uwsgi_pass 127.0.0.1:5000;
      	}
    }
    

    一定不要忘记重新启动nginx。

    • 启动uwsgi
    uwsgi --socket 127.0.0.1:5000 --wsgi-file manage.py --callable app
    
    • 将启动参数写入配置文件uwsgi.ini
    [uwsgi]
    socket = 127.0.0.1:5000
    wsgi-file = manage.py
    callable = app
    # 后台启动
    daemonize = ~/log/uwsgi.log
    

    启动:uwsgi uwsgi.ini

静态资源处理

  • 说明:静态文件的请求没有必要转发,因为nginx自己就可以处理。所以我们想要重写转发规则。

  • 静态资源的路由转发规则:

    location /static {
      	root /var/www/bbs;
      	# 或
      	alias /var/www/bbs/static;
    }
    
  • 测试准备

    • 在项目目录下创建static文件夹
    • 拷贝一张图片gyy.jpeg到static目录
  • 测试:看到图片表示OK

    www.bbs.com/static/gyy.jpeg
    

上线步骤:

1.在线上服务器安装虚拟开发环境

2.将开发环境中依赖包require.txt中的所有依赖在虚拟开发环境中安装一遍

pip  install -r require.txt

3.在虚拟开发环境中安装uwsgi

pip install uwsgi

4.将自己的项目拷贝到站点根目录

  • 创建配置文件,将启动参数写入配置文件uwsgi.ini
[uwsgi]
socket = 127.0.0.1:5000
wsgi-file = manage.py
callable = app
# 后台启动
daemonize = ~/log/uwsgi.log
  • 启动uwsgi (在虚拟开发环境中)
uwsgi uwsgi.ini

ps -aux|grep uwsgi  查看是否启动
  1. 配置虚拟站点
cd /etc/nginx/sites-avaiable/
#以default为模板创建配置文件
sudo cp default  www.1904.com


server {
        listen 80;
        root /data/www/1904;
        server_name www.1904.com;

        location / {
                # 配置uwsgi
                include uwsgi_params;
                uwsgi_pass 127.0.0.1:5050;
        }
		# 静态文件请求处理
        location /static {
                alias /data/www/1904/static;

        }
}
cd /etc/nginx/sites-enable/
sudo ln -s ../sites-avaiable/www.1904.com  www.1904.com
#重启nginx
sudo service nginx restart

6 把项目中使用数据库备份出来,拷贝到服务器上,在服务器重建数据库,然后把数据恢复到数据库中

创建一个flask项目 创建一个flask项目 首先我们新建一个虚拟环境,ubuntu18.04配置虚拟环境可以在我django的专栏中找到。 下载配置好了以后,我们就可以创建一个虚拟环境来放我们的flask项目了 安装flask 在虚拟环境中键入 pip install flask 即可以下载flask包 开启flask项目 打开pycharm,新建一个flask项目 将location修改成你需要放置项目的路径 ... 阅读详情

相关推荐

BERTopic模型入门教程(附代码+参数调节)

BERTopic 是一种用于从文本数据中提取主题模型的新型方法。通过结合 BERT嵌入和传统的主题模型来生成语义丰富的主题。传统的主题模型(如LDA)主要依赖于词频矩阵,而 BERTopic 通过预训练语言模型生成高维语义嵌入来捕捉词语间的复杂关系,因此可以更好地处理上下文信息。BERTopic模型可以看作是创建其主题表示的一系列步骤。核心原理如下:就本质而言,BERTopic就是一个拼装框架,可以把每部分都替换成其他模型,只要完成任务即可。

m0_52069102的博客 1万+

Flask项目搭建及部署(完整版!全网最全)

全局通用配置类"""项目配置核心类"""#调试模式​# 配置日志​​# 配置redis# 项目上线以后,这个地址就会被替换成真实IP地址,mysql也是​#数据库连接格式# 动态追踪修改设置,如未设置只会提示警告# 查询时会显示原始SQL语句# 数据库连接池的大小#指定数据库连接池的超时时间# 控制在连接池达到最大值后可以创建的连接数。当这些额外的 连接回收到连接池后将会被断开和抛弃。​​#rabbitmq参数配置# 主应用的根目录​config = {​。

Roderick888888的博客 8062

[事件相机1]2024CVPR:Event Stream-based Visual Object Tracking: A High-Resolution Benchmark Dataset

作者:Xiao Wang, Shiao Wang, Chuanming Tang, Lin Zhu, Bo Jiang, Yonghong Tian, Jin Tang代码:https://github.com/Event-AHU/EventVOT_Benchmark。

m0_37412775的博客 1707

python学习-从零搭建Flask项目

Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2。Flask使用 BSD 授权。

qq_43548590的博客 9116

UBUNTU使用RTL8811CU网卡(包含树莓派)

下载驱动 从绿联中下载:链接 下载解压后,chmod Linux文件夹 sudo chmod -R 777 ./Linux/ 修改系统的BOOT Secure为disable,参考链接:链接 sudo apt install mokutil sudo mokutil --disable-validation 重启电脑后,按照提示选择change secure boot state,并输入对应的字母(并不是全部密码,而是第几个),选择disable即可 进入Linux文件夹,运行命令 ..

Hot_Ant的博客 6246

基于STM32F1XX 、HAL库的OPT4001-Q1环境光传感器驱动应用C语言程序设计

OPT4001-Q1 的输出是半对数 的,具有 9 个二进制对数满量程照度范围,每个范围内具有高度线性响应,使得 PicoStar™ 型号的测量能力为 312.5μlux 至 84klux,USON 型号的测量能力为 400µlux 至 107klux。// 禁用中断(示例)

PP_Cottage的博客 461

Flask框架——(认识Flask框架及项目配置)

Flask框架 1. Flask框架介绍 flask是⼀款⾮常流⾏的Python Web框架,出⽣于2010年,作者是ArminRonacher,本来这个项⽬只是作者在愚⼈节的⼀个玩笑,后来由于⾮常受欢迎,进⽽成为⼀个正式的项⽬。 flask⾃2010年发布第⼀个版本以来,⼤受欢迎,深得开发者的喜爱,并且在多个公司已经得到了应⽤,flask能如此流⾏的原因,可以分为以下⼏点: 微框架、简洁、只做...

weixin_45550881的博客 2万+

R数据分析:广义估计方程式GEE的做法和解释

好久没有更新文章了,因为同学们咨询的问题有点多,另一个原因就是自己实在太懒。。。。 今天继续给大家写广义估计方程式GEE。 In statistics, a generalized estimating equation (GEE) is used to estimate the parameters of a generalized linear model with a possible unknown correlation between outcomes. 上面的英文解释告诉我们,当我们

Codewar的博客 1万+

Flask常用扩展包

Flask-SQLalchemy:操作数据库;Flask-script:插入脚本;Flask-migrate:管理迁移数据库;Flask-Session:Session存储方式指定;Flask-WTF:表单;Flask-Mail:邮件;Flask-Bable:提供国际化和本地化支持,翻译;Flask-Login:认证用户状态;Flask-OpenID:认证;Flask-RESTful:开发REST...

ioooooooooi的博客 1943

STM32G4 电机外设篇(三) TIM1 发波 和 ADC COMP DAC级联

STM32G4电机控制外设应用笔记摘要:本文详细介绍了TIM1高级定时器生成三对互补PWM波的配置方法(预分频器PSC=30000,重装载值ARR=10000),重点说明需断开电机连线避免干扰。通过STM32CubeMX配置TIM1通道4触发ADC采样,设置RCR分频参数,并给出Keil代码修改要点。第二部分探讨了TIM1、ADC、比较器和DAC的级联应用,包括电流采样触发时序(在PWM波峰值前采样)和过流保护机制。配置步骤包含DAC3作为比较器负输入端、设置Break触发封波保护,并附关键代码段实现外设联

qq_43091070的博客 1102

uniapp - 获取设备麦克风权限+麦克风设备列表,用户可选择切换麦克风设备功能,选择麦克风采集设备后点击录制音频外部声音+可随时暂停/继续录音+记录音频录制时长(支持在线播放试听或下载MP3文件)

uniapp获取麦克风设备列表,uniapp录制声音,Uniapp获取麦克风权限,uniapp苹果ios安卓app获取麦克风设备列表,Uniapp H5获取浏览器麦克风并实现录音,Uniapp实现麦克风权限管理与音频录制全流程,uni-app实战案例:实现H5页面麦克风权限获取与录音功能,uni-app音频录制,uniapp麦克风授权窗口,uniapp获取iOS麦克风权限,实现前端录音并播放,把音频传给后端接口处理,获取麦克风并实现录音功能,前端获取/切换麦克风播放采集音频和采集音量大小,前端调用麦克风实现

🏆 前端领域优质创作者 2982

Python初级项目Week2: Flask

此为牛客网python初级项目,侵权立删 装饰器(decorator) 教程:http://python.jobbole.com/85056/ args:用来传递任意个无名字参数,这些参数以一个Tuple的形式访问 kvargs :用来处理传递任意个有名字的参数,这些参数用dict来访问 示例代码: def log(level, *args, **kvargs): d...

王大凤的博客 343

Unity之如何实现哔哩哔哩直播弹幕游戏

什么是直播间互动?当我们使用哔哩哔哩进行直播或者观看视频时,我们可以通过接入哔哩哔哩提供的 直播&互动玩法SDK,让直播和视频可以与Unity3D游戏客户端或者游戏服务器进行互动。

TxNet 1543

python flask入门_Python

FLask 本身“轻”的特点,让你的学习不会那么“重”,掌握核心知识就能进行开发 ,更容易获得成就感,学习也就会更有动力,另外,FLask虽轻,但Flask 很强,内核+扩展的特点,让FLask 拥有“快速”开发各种类型应用的能力。这次课,我们的立意就是"快",快速从Python小白到初级Python工程师以轻量级Python框架Flask,更轻松的完成Python小白的蜕变快速"过渡"从语法回顾...

weixin_33478314的博客 272

WINCC7.3破解文件

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

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Flask应用工厂模式与全局模式区别详解(适配初级Flask开发者)

全局模式的初始化应用方式是Flask官方文档在初级教程中最常见的初始化方式我们只需要在脚本中直接创建app对象,那么这个对象在整个程序运行期间都是唯一的。代码示例:app=Flask(__name__)#此处就是全局模式的初始化方法return '这里是首页路由'具体特点:1.简单直接代码量少易于新手理解2.绑定时机早对象在模块导入实就已被创建,所有的配置都需要在创建之前就确定好。

m0_75279154的博客 613

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

java和python结合做项目_由浅入深Java+Python结合项目实战实战教程

【课程内容】[初级项目:图片社交+电商导购+漂流瓶]项目实现功能:用户注册,登录,登出图片的多种上传方式,删除首页图片分类,排序和分页个人页管理图片分享课程内容:开发工具和Python语言介绍flask框架入门,模板以及flask-script使用数据库交互以及flask-sqlalchemy扩展使用用户注册登录管理以及flask-login扩展的使用本地图片上传,flask-upload扩展以及...

weixin_39860755的博客 333

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

视频教程-python flask教程-Python

python flask教程 毕业于清华大学,曾担任Google算法工程师,...

weixin_34039664的博客 508

java和python结合做项目_由浅入深Java+Python结合项目实战

【课程内容】[初级项目:图片社交+电商导购+漂流瓶]项目实现功能:用户注册,登录,登出图片的多种上传方式,删除首页图片分类,排序和分页个人页管理图片分享课程内容:开发工具和Python语言介绍flask框架入门,模板以及flask-script使用数据库交互以及flask-sqlalchemy扩展使用用户注册登录管理以及flask-login扩展的使用本地图片上传,flask-upload扩展以及...

weixin_39719476的博客 983

牛客网初级项目总结

1. 开发工具Git,PyCharm 2. Flask,Flask-Script 3. Flask-SQLAlchemy 4. Flask-Login 5. 云存储 6. 单元测试/部署 产品功能扩展 1. 用户注册,邮箱激活流程 2. 首页滚动到底部自动加载更多 3. 管理员后台删图 4. 每日推荐图片首页置顶 5. 导购小尾巴,图片内嵌广告(smzdm.com)

YANG_Gang2017的博客 1436

【Flask框架】——第一个Flask项目

第一个Flask框架!

Python全栈系列 1万+

Flask Volt Dashboard 开源项目教程

Flask Volt Dashboard 开源项目教程 1. 项目介绍 Flask Volt Dashboard 是一个基于 Flask 框架和 Bootstrap 5 的开源项目,由 AppSeed 平台生成。该项目提供了一个功能齐全的仪表板模板,包含基本模块、数据库支持、用户认证以及部署脚本。Volt Dashboard 是一个免费且开源的 Bootstrap 5 仪表板模板,包含超过 100...

gitblog_00483的博客 810

Bootstrap-Flask 项目教程

Bootstrap-Flask 是一个为 Flask 项目提供 Bootstrap 4 和 Bootstrap 5 支持的扩展库。它包含了一系列的 Jinja 宏,帮助开发者更轻松地将 Flask 相关的数据和对象渲染为 Bootstrap 标记的 HTML。通过使用 Bootstrap-Flask,开发者可以快速构建具有 Bootstrap 样式的 Flask 应用,而无需手动编写大量的 HTM...

gitblog_00003的博客 1272

从开发到生产:Qwen3-32B-w8a8-mxfp8昇腾NPU规模化部署的显存、吞吐与稳定性要点

Qwen3-32B-w8a8-mxfp8 是一个面向昇腾(Ascend)NPU 的 W8A8 MXFP8 量化推理模型,专为 vLLM(vllm-ascend)推理框架优化。它把 32B 参数的 Qwen3 大模型从 BF16 压缩到 8 位整数量化,在保持生成质量的同时显著降低显存占用、提升并发吞吐,是从开发调试走向生产级规模化部署的实用选择。本文讲清楚三件事:显存怎么算、吞吐怎么调、稳定性怎么

gitblog_00987的博客 1008

新建flask项目,配置入口文件,启动项目

manage.py项目入口文件创建好之后导入包:其一是flask框架文件,其二是跨域文件(跨域,因为有浏览器同源策略,不同协议,不同域名,不同端口,不能通信)时,它直接运行你的 Flask 应用,通常会在代码中包含更多调试信息,比如正在监听的地址和调试模式的状态。这些配置会影响应用的行为和性能。:Flask 支持中间件和扩展(如数据库、认证等),实例化的 Flask 对象是这些扩展的注册和管理中心。总之,实例化 Flask 对象是构建一个 Flask 应用的基础,提供了应用的整体结构和功能。

m0_63178019的博客 2767
上一篇: Flak的分页器的使用
下一篇: pyenv管理虚拟环境
Are you ready
博客等级 码龄8年 312粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值