欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Flask框架的: 简介、虚拟环境、配置文件、URL 和视图

程序员文章站 2023-01-25 17:13:43
第一节//题外话:创建Pycharm 虚拟环境有没有考虑过一个问题,当我们pip install 加载模块时,这些模块究竟被下载到哪里了。这关系到使用和报错。首先,打开pycharm – file – setting – project – project interpreter点击右侧上方的add我们可以看到一共有两个关键地点:1. 虚拟环境virtualenv Environment 2. System Interpreter其实所有的都是加载到 Syst...

第一节//flask虚拟环境

题外话:创建Pycharm 虚拟环境

有没有考虑过一个问题,当我们pip install 加载模块时,这些模块究竟被下载到哪里了。这关系到使用和报错。
首先,打开pycharm – file – setting – project – project interpreter
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
点击右侧上方的add
我们可以看到一共有两个关键地点:1. 虚拟环境virtualenv Environment 2. System InterpreterFlask框架的: 简介、虚拟环境、配置文件、URL 和视图
其实所有的都是加载到 System Interpreter,可以进入查看。
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
因此,很多人经常会遇到一些报错,那是因为他们没有勾选以下这处, Inherit global site-packages
当勾选后,这些模块会同时加载到上述谈及的两个环境中,那么就可以同时使用,不再报错。

否则只能在虚拟环境中,再次单独下载进去。
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图

1. 在cmd中创建flask虚拟环境

为了防止盗用,我将flask目录建成 flash ,太厉害了。

  1. pip install pipenv

  2. pipenv shell

当说Sucessfully created virtual environment! 安装成功
也随之出现举例如(flash框架-xF0v0y9)

注意: 先要在pycharm中配置创建项目文件夹,然后 cmd中进入目录,如果我们的目录flash框架是在C盘下,那么必须要在目录前加c:/ 否则找不到目录,如下:
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
第一步 pip install pipenv , 且升级
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
第二步 pipenv shell 来生成虚拟环境,并会开启进入到虚拟环境的命令。
exit 是退出虚拟环境命令
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图

在我们的文件夹“flash框架”中,会自动生成一个文件 “pipfile”,

Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
在pycharm中,显示出该文件内容,我们来领略以下:
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
下面我把他们的含义注释进去:
url # 是 国内pip 源,不然下载库会很慢
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图

2.进入pycharm 项目进行配置

注意一点:
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
新建一个 固定的变量名 “WORKON_HOME” ,以后不要更改,今后便于管理虚拟环境的包(安装包等)
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图

创建好就可以了。
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图

来到pycharm 中勾选现存环境
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
ok了
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
那么我们可以去CMD中,加载 flask了。
pip install flask 并且用 pip list 看一下
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
回到pycharm 中, 你可以看到的cmd中的包也已经存在了。
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图

## 题外话, 一般公司都会有一个导出的 requirements.txt****
然后通过 freeze>c:/xxx/requirements.txt 来 一致性统一掉所有安装的包。***

第二节 flask简介和flask程序

1. flask 是什么
flask 是一款非常流行的python web 框架,出生于2010年,它的流行和备受喜爱原因如下:

  • 微框架、简洁、制作他需要做的,给开发者提供了很大的扩展性。
  • flask和相应的插件写得很好,用起来很爽。
  • 开发效率非常高,比如使用SQLALchemy的ORM操作数据库可以节省开发者大量书写sql的时间。
  • flask的灵活度非常高,他不会帮你做太多决策,一些你都可以按照自己的意愿进行更改。
  • 使用flask开发数据库的时候,具体是使用SQLALchemy还是MongoEngine,选择权完全掌握在开发者手里。区别于Django, Django内置了非常完善和丰富的功能,并且如果你想替换成自己想要的,要么不支持,要么非常麻烦。
  • 把默认的Jinijia2模板引擎替换成其他模板引擎都是非常容易的。

2. 第一个flask程序
首先导入flask

Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
实例化 flask 类,今后就可以直接使用它了。
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
注意,回顾下, name=“main” 主程序,也叫main函数。

来来来,运行以下,简单的装饰器和函数之后,看看结果,给了我们链接和端口。
其中@app.route(‘/’)是指根路由, 它的名称是视图函数
这两三句关系是, 路由映射到函数中。即路由是调用函数,然后返回了结果值
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
不要犹豫了昂, 点击链接看看显示啥呗:
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图

那么这个路由是哪里来的呢? 毫无疑问是本机啊,local host。
我们来查看一下
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
右键 通过pycharm 打开hosts 文件,看看:
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
端口默认是5000, 如果你皮,偏要改,那么如下做更改:
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
3.debug模式
在程序出错时可以进行调试。
以往的debug概念是什么,怎么用?
看下图:在第8行处单击 形成breakpoint 断点进行调试,配合右键debug程序指令。一步步看程序。
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
那么下面我们来真正了解flask中debug的背景和用法:

## debug作用 1

如果我在程序中写了 a=1/0,这个式子数学上没有意义,但看似不影响程序运行
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
你看没有报错
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
但当你点击路由链接进入后发现,这本来呈现给你的客户看的页面,不显示结果,而显示了服务器出现问题(因为不能让你客户体验到你的程序出现问题,所以一般都会发布成服务器问题,哈哈哈!)
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
那么,如果我们有成千上万的脚本语句,我们怎么去检查呢?
我们在原先app.run()中添加debug=True, 然后run 一下看到下图
Debug mode :on
(之前是off)
Debugger is active!
Debugger PIN:
debug的写法方式一 : app.run(debug=True)
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图

这时候,我们再进入链接去看看显示了什么?
如下,界面已经完全不同,已经把除0的错误给指示出来了。
但是要注意,这个不能给客户看到如此界面,所以我们debug功能只能是开发时用,一旦上线,就必须关闭。
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
当你把鼠标放到具体行时,右边会出现一个打开python shell接口按钮
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
进入这个接口, 记住, console 时我们以前学习的交互窗口区
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
这样,就进入了console 调试区(console ready),如下。
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
那么既然我们直接定位到了问题,要么改掉,要么注释掉就可以了。

## debug作用 2
在更改过程序后,直接ctrl+s 可以自动保存程序并重启运行。

debug方法命令二 : app.debug=True
说明flask中封装了app的debug方式,不信,自己进入指令帮助详情中看看。
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
debug方法命令三: 通过字典运用方式,把debug打开
app.config.update()
注意,如同在字典和集合中用到过update,把b添加到a。
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
第一种字典写法注意,如果debug小写, 运行后, debug mode :off
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
所以,必须是大写DEBUG
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
大概方式4+1
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图

app.config.update({‘DEBUG’:True}) 也是可以的,这也是字典思想,同样要注意DEBUG 大写

Flask框架的: 简介、虚拟环境、配置文件、URL 和视图

第三节 flask项目的配置文件

flask项目的配置,都是通过app.config对象来进行配置的。比如要配置一个项目处于DEBUG模式下,那么可以使用app.config[‘DEBUG’]=True来进行设置,那么flask项目将以DEBUG模式运行。在flask项目种,有四种方式进行项目的配置
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
其中,写死的方式,和字典update方式,都不建议用,很不灵活。

推荐的配置方式:

如果你的配置项特别多,可以把所有的配置项都放在一个模块种,然后通过加载模块的方式进行配置,假设有一个settings.py模块,专门用来存储配置项的,此时你可以通过app.config.from_object()方法进行加载,并且该方法既可以接收模块的字符串名称,也可以模块对象

比如,我们创建专门的config.py 里面编写了传递报错
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
于是,我们来利用它执行原来程序,该怎么写,就用app.config.from_object()呗。(注意,将xxxerror 这两行举例删除,不然认不出报错。)

‘config’字符串和直接config,都是可以的。debug mode:on
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
@@@ 但是我在尝试直接(config)这个时报错
app.config.from_object(config)
NameError: name ‘config’ is not defined
我后来尝试在开头import config 就成功了。如下:
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图

以后我们再深入探索去做详细配置文件。

也可以以完整py文件方式配置:app.config.from_pyfile(‘config.py’, silent=True)

但是你下面发现一个什么问题?第二行 为什么config 是带有红线的,这可不是报错,而是识别级。

Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
因为它默认导入加载config包 是从根目录去找, 比如我的是C:\flask框架。

当我们去做这个操作时,mark directory as 的source Root 时候
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
文件夹变蓝色,且,不再有识别级红线。
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图

上述命令还有个第二个值,怎么用?
当silent=Ture ,如果前面的py文件名写错了,它是不会在运行结果中报错的,而是打开路由链接客户网页端又是报服务器错误,而 改成false的话,就报错提醒
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图

第四节 URL 和 视图

先review一下一些基础的知识点:

函数和rul的映射关系
数据约束类型


其中,尖括号 是固定的写法,语法为,variable 默认的数据类型是字符串,variable 可以在满足类型的情况下,可以不同的值。
如果需要指定类型,则要写成converter:variable,其中converter就是类型名称,可以有以下几种:


string: 默认的数据类型,接受没有任何斜杠/的字符串。
int: 整形
float: 浮点型。
path: 和string类似,但是可以传递斜杠/。
uuid: uuid类型的字符串。
any:可以指定多种路径
/ 分隔符,如果URL 在
? 分隔符


如果不想定制子路径来传递参数,也可以通过传统的?=的形式传递参数,例如:/artical?id=xxx,这种情况下,可以通过request.args.get(‘id’)来获取id的值。如果是post方法,则可以通过request.form.get(‘id’)来进行获取。

注意1
只要符合int类型,vid取值什么都可以。
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
list后面怎么写都是可以的。
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图

注意2
@ app.route(’/<any(dict, tuple):url_path>/’)
def item(url_path):
return url_path
这个方式下,在执行网页中,只限定了 dict 和tuple 两个子路径,其他写什么都访问不到,这就是这个指令用法和作用。
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图

注意3
假设再定义一个route, 用到了request,一定会报错,因为你要么在代码中构造这个方法,要么就是顶部导入。
很显然,直接导入吧。

@app.route(’/ie’)
def baidu():
return request.args.get(‘name’)
运行后,在浏览器窗口中,输入http://127.0.0.1:5000/ie?name=bill
刷新就会显示bill

所以呢,注意路由ie 开始写,用?name= 跟值。 这个有点像百度网址后面的应用,请看https://www.baidu.com/?tn=62095104_26_oem_dg

好了,今天就写到这里,大约一个月没有更新了,真的时间不够用啊!
ps 我建了flash 子目录是故意的 !

本文地址:https://blog.csdn.net/Bill_82/article/details/109008107

相关标签: flask python web