pythonflask安装和命令详解
Flask Web开发实战学习笔记
Flask简介
git管理代码
$ git clone github/greyli/helloflask.git
$ cd helloflask
1.1搭建开发环境
1.1.1 Pipenv⼯作流
现在使⽤pip安装Pipenv:
$ pip install pipenv
在Linux或macOS系统中使⽤sudo以全局安装:
$ sudo pip install pipenv
可以使⽤下⾯的命令检查Pipenv是否已经安装:
$ pipenv --version
1.创建虚拟环境
$ pipenv install
Creating a virtualenv for this project…
...
Virtualenv location: /path/to/virtualenv/helloflask-5Pa0ZfZw
...
附注:
默认情况下,Pipenv会统⼀管理所有虚拟环境。在Windows系统中,虚拟环境⽂件夹会在C:
\Users\Administrator\.virtualenvs\⽬录下创建,⽽Linux或macOS会在~/.local/share/virtualenvs/⽬录下创建。如果你想在项⽬⽬录内创建虚拟环境⽂件夹,可以设置环境变量 PIPENV_VENV_IN_PROJECT,这时名为.venv的虚拟环境⽂件夹将在项⽬根⽬录被创建。
虚拟环境⽂件夹的⽬录名称的形式为“当前项⽬⽬录名+⼀串随机字符”,⽐如helloflask-5Pa0ZfZw。
在单独使⽤Virtualenv时,我们通常会显式地激活虚拟环境。在 Pipenv中,可以使⽤pipenv shell命令显式地激活虚拟环境:
$ pipenv shell
Loading .env environment variables…
Launching subshell in virtual environment. Type 'exit' to return.
提⽰:
当执⾏pipenv shell或pipenv run命令时,Pipenv会⾃动从项⽬⽬录下的.env⽂件中加载环境变量。 Pipenv会启动⼀个激活虚拟环境的⼦shell,现在你会发现命令⾏提⽰符前添加了虚拟环境名“(虚拟环境名称)$”,⽐如:
(helloflask-5Pa0ZfZw) $
这说明我们已经成功激活了虚拟环境,现在你的所有命令都会在虚拟环境中执⾏。当你需要退出虚拟环境时,使⽤exit命令。
除了显式地激活虚拟环境,Pipenv还提供了⼀个pipenv run命令,这个命令允许你不显式激活虚拟环境即可在当前项⽬的虚拟环境中执⾏命令,⽐如:
$ pipenv run python hello.py
这会使⽤虚拟环境中的Python解释器,⽽不是全局的Python解释器
2.管理依赖
在创建虚拟环境时,如果项⽬根⽬录下没有Pipfile⽂件,pipenv install命令还会在项⽬⽂件夹根⽬录下创建Pipfile和Pipfile.lock⽂件,前者⽤来记录项⽬依赖包列表,⽽后者记录了固定版本的详细依赖包列表。当我们使⽤Pipenv安装/删除/更新依赖包时,Pipfile以及Pipfile.lock 会⾃动更新。
1.1.2 安装Flask
$ pipenv install flask
... Successfully installed Jinja2-2.10 MarkupSafe-1.0 Werkzeug-0.14.1 click-6.7
本⽂章使⽤了最新版本的Flask(1.0.2),如果你还在使⽤旧版本,请使⽤下⾯的命令进⾏更新:
$ pipenv update flask
1.2  hello flask
使⽤下⾯的命令切换到该⽬录:
$ cd demos/hello
在hello⽬录下的app.py脚本中包含⼀个最⼩的Flask程序,如代码清单1-1所⽰。代码清单1-1 hello/app.py:最⼩的Flask程序
from flask import Flask app = Flask(__name__)
@ute('/') def index():  return '<h1>Hello Flask!</h1>'
1.2.1 创建程序实例
我们安装Flask时,它会在Python解释器中创建⼀个flask包,我们可以通过flask包的构造⽂件导⼊所有开放的类和函数。我们先从flask包导⼊Flask类,这个类表⽰⼀个Flask程序。实例化这个类,就得到我们的
程序实例app:
from flask import Flask
app = Flask(__name__)
传⼊Flask类构造⽅法的第⼀个参数是模块或包的名称,我们应该使⽤特殊变量__name__。Python会根据所处的模块来赋予__name__变量相应的值,对于我们的程序来说(app.py),这个值为app。除此之外,这也会帮助Flask在相应的⽂件夹⾥到需要的资源,⽐如模板和静态⽂件。
提⽰
Flask类是Flask的核⼼类,它提供了很多与程序相关的属性和⽅法。在后⾯,我们经常会直接在程序实例app上调⽤这些属性和⽅法来实现相关功能。在第⼀次提及Flask类中的某个⽅法或属性时,我们会直接以实例⽅法/属性的形式写出,⽐如存储程序名称的属性为app.name。
1.2.2 注册路由
在⼀个Web应⽤⾥,客户端和服务器上的Flask程序的交互可以简单概括为以下⼏步:
python安装教程非常详细1)⽤户在浏览器输⼊URL访问某个资源。
2)Flask接收⽤户请求并分析请求的URL。
3)为这个URL到对应的处理函数。
4)执⾏函数并⽣成响应,返回给浏览器。
5)浏览器接收并解析响应,将信息显⽰在页⾯中。
在上⾯这些步骤中,⼤部分都由Flask完成,我们要做的只是建⽴处理请求的函数,并为其定义对应的URL规则。只需为函数附加 ute()装饰器,并传⼊URL规则作为参数,我们就可以让URL与函数建⽴关联。这个过程我们称为注册路由(route),路由负责管理 URL和函数之间的映射,⽽这个函数则被称为视图函数(view function)。
操作:
在这个程序⾥,ute()装饰器把根地址/和index()函数绑定起来,当⽤户访问这个URL时就会
触发index()函数。这个视图函数可以像其他普通函数⼀样执⾏任意操作,⽐如从数据库中获取信息,获取请求信息,对⽤户输⼊的数据进⾏计算和处理等。最后,视图函数返回的值将作为响应的主体,⼀般来说,响应的主体就是呈现在浏览器窗⼝的HTML页⾯。在最⼩程序中,视图函数index()返回⼀⾏问候:
@ute('/') def index(): return '<h1>Hello, World!</h1>'
虽然这个程序相当简单,但它却是⼤部分Flask程序的基本模式。在复杂的程序中,我们会有许多个视图函数分别处理不同URL的请求,在视图函数中会完成更多的⼯作,并且返回包含各种链接、表单、图⽚的 HTML⽂件,⽽不仅仅是⼀⾏字符串。返回的页⾯中的链接⼜会指向其他URL,被单击后触发对应的视图函数,获得不同的返回值,从⽽显⽰不同的页⾯,这就是我们浏览⽹页时的体验。
提⽰
route()装饰器的第⼀个参数是URL规则,⽤字符串表⽰,必须以斜杠(/)开始。这⾥的URL是相对URL(⼜称为内部URL),即不包含域名的URL。以域名www.helloflask为例,“/”对应的是根地址(即www.helloflask),如果把URL规则改为“/hello”,则实际的绝对地址(外部地址)是www.helloflask/hello。假如这个程序部署在域名
为www.helloflask的服务器上,当启动服务器后,只要你在浏览器⾥访问www.helloflask,就会看到浏览器上显⽰⼀⾏“Hello,Flask!”问候。
1.为视图绑定多个URL
@ute('/hi')
@ute('/hello')
def say_hello():
return '<h1>Hello, Flask!</h1>'
2.动态URL
@ute('/greet/<name>')
def greet(name):
return '<h1>Hello, %s!</h1>' % name
附注:
当URL规则中包含变量时,如果⽤户访问的URL中没有添加变量,⽐如/greet,那么Flask在匹配失败后会返回⼀个404错误响应。⼀个很常见的⾏为是在ute()装饰器⾥使⽤defaults参数设置URL变量的默认值,这个参数接收字典作为输⼊,存储URL变量和默认值的映射。在下⾯的代码中,我们为greet视图新添加了⼀个ute()装饰器,为/greet设置了默认的name值:
@ute('/greet', defaults={'name': 'Programmer'})
@ute('/greet/<name>')
def greet(name):
return '<h1>Hello, %s!</h1>' % name
这时如果⽤户访问/greet,那么变量name会使⽤默认值 Programmer,视图函数返回<h1>Hello,Programmer!</h1>。上⾯的⽤法实际效果等同于:
@ute('/greet')
@ute('/greet/<name>')
def greet(name='Programmer'):
return '<h1>Hello, %s!</h1>' % name
1.3 启动开发服务器
$ flask run
* Environment: production
WARNING: Do not use the development server in a production environment. Use a production WSGI server instead.
* Debug mode: off
* Running on 127.0.0.1:5000/ (Press CTRL+C to quit)
注意:
如果报这个错误!
Error: Could not locate a Flask application. You did not provide the "FLASK_APP" environment variable, and a "wsgi.py" or "app.py" module was not found in the current directory.
那就是路径没有切到flask 的app.py⽬录下!
总结
以上所述是⼩编给⼤家介绍的python flask安装和命令详解,希望对⼤家有所帮助,如果⼤家有任何疑问欢迎给我留⾔,⼩编会及时回复⼤家的!