资讯专栏INFORMATION COLUMN

02_01_创建最简单的web程序

zsy888 / 3461人阅读

摘要:初始化所有的程序都必须创建一个程序实例,这个程序实例就是类的对象。定义路由最简便的方式,是使用程序实例提供的修饰器前例把函数注册为程序根地址的处理程序。

初始化

所有的Flask程序都必须创建一个程序实例, 这个程序实例就是Flask类的对象。客户端把请求发送给Web服务器, 服务器再把请求发送给Flask程序实例, 然后由程序实例处理请求。

创建程序实例:

from flask import Flask

app = Flask(__name__)
        
注意: 此处的__name__是一个全局变量, 它的值是代码所处的模块或包的名字, Flask用这个参数决定程序的根目录, 以便稍后能找到相对于程序根目录的资源文件位置。
路由和视图函数

    还是上面那句话——客户端把请求发送给Web服务器, 服务器再把请求发送给Flask程序实例, 然后由程序实例处理请求。

    那么程序实例如何处理请求, 答案是程序实例通过路由来处理请求——路由就是URL和处理请求的函数的映射——处理请求的函数就叫做视图函数。

    Flask定义路由最简便的方式, 是使用程序实例提供的app.route修饰器:

@app.route("/"):
def index():
    return "

Hello world!

"

       
       
前例把index()函数注册为程序根地址的处理程序。 ( 如果部署程序的服务器域名为www.example.com, 在浏览器中访问http://www.example.com后, 会触发服务器执行index()函数。 )

         这个函数的返回值称为响应, 是客户端接收到的内容。

    地址中包含可变部分的路由:

        @app.route("/user/")

         def user(name):

             return "

Hello, %s!

" %name

        尖括号中的内容就是动态部分,任何能匹配静态部分的URL都会映射到这个视图函数, 调用视图函数时, Flask会将动态部分作为参数传入函数。

        注意:路由中的动态部分默认类型是字符串, 不过也可以使用别的类型如:/user/只会匹配动态片段id为整数的url。除了整型, Flask还支持float, path类型, 其中path类型也是字符串, 不过其中的/不会被当做分隔符, 而是动态片段的一部分。

3.启动服务器

    程序实例用run方法启动Flask集成的开发Web服务器:

        if name == "__main__": (只有直接运行该模块时条件才为真, 该模块被导入条件为假)

            app.run(debug=True)  #debug参数为True, 表示启用调试模式。

    服务器启动后会进入轮询, 等待并处理请求, 直到程序停止, 比如按Ctrl+C

4.一个完整的程序

from flask import Flask

app = Flask(__name__)

静态路由

@app.route("/")

def index():

    return "

hello, world!

"

动态路由

@app.route("/user/")

def index(name):

    return "

hello, {}

".format(name)

if name == "__main__":

    #服务器轮询

    app.run(debug=True)

————————————————————————实践—————————————————————————

5.实践操作

一.准备

按上节所说, 

    &cd flasky     进入flasky文件夹

    &source venv/bin/activate    激活虚拟环境

迁出新版本,

    &git checkout 2a      此命令迁出的是只含有静态路由的程序, 效果图如下:

        

         注意此时迁出的版本hello.py只有一个静态路由。 而且没有启动服务器的代码, 我们要手动修改加上, 然后:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42500.html

相关文章

  • Servlet

    摘要:一个应用程序中可以有很多,这些都共享同一个对象,我们经常将对象叫域对象。常用的的获取对象的向对象绑定数据的从对象取出数据的获取当前应用的初始化参数的获取资源文件,返回流的获取资源文件,返回路径 第一个Servlet开发步骤 01_创建一个普通Java类,实现Servlet接口 02_将写好的Servlet类,还得配置到web.xml文件中去 Demo01.java 编写一个简单的...

    happen 评论0 收藏0
  • 第一个springboot程序(基于IDEA)

    摘要:启动项目,验证进入到项目中的中的方法的类中,在方法上点击启动启动报错,查看报错原因分析问题原因说明端口被占用了。解决方法修改的端口号,或者将端口的应用的端口号修改了。再次启动项目启动成功,验证项目,验证成功 1.创建项目 打开IDEA,File->New->ProjectshowImg(https://segmentfault.com/img/bV22nr?w=523&h=225); ...

    microcosm1994 评论0 收藏0
  • React VR 快速入门完全教程

    摘要:快速入门什么是是一个开放源代码的库,为呈现的数据提供了视图渲染。最后,项目根组件应该通过来进行注册,以便能够进行打包和正常运行。基本思想是渲染一个立方体,并将观众置于中心,随后移动。表示从指定方向平均照亮所有物体的光源。 React VR 快速入门 什么是React React是一个开放源代码的JavaScript库,为HTML呈现的数据提供了视图渲染。React视图通常使用指定的像H...

    andot 评论0 收藏0
  • Java编程思想——知识卡片01_02

    摘要:堆栈位于通用随机访问存储器中,但通过堆栈指针可以从处理器那里获得直接支持。堆栈指针若向下移动,则分配新的内存若向上移动,则释放那些内存。创建程序时,系统必须知道存储在堆栈内所有项的确切声明周期,以便上下移动堆栈指针。 写在前面 首先我想说的是 Java编程思想——知识卡片 将是一系列文章,文章的内容是我阅读《Java编程思想》这本书的心得体会,那么我为什么要写这一系列的文章呢?原因有一...

    Lyux 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<