资讯专栏INFORMATION COLUMN

1.第一个Flask程序、DEBUG模式及URL传参

developerworks / 768人阅读

摘要:中的代码如下首先从导入,我并没有,为何能导入呢我理解是建立项目的时候自动帮我们做了这个事情,然后初始化一个对象,参数是,代表的是本身这个模块的名字,我们暂时不用理解为何要传入这个参数。

--引言请见我的简书https://www.jianshu.com/p/e27...

我们打开PyCharm,新建一个Project,在左侧选择Flask,右侧Location可选择项目存放的位置,Project Interpreter选择使用的编译器,我们当然可以选择已经安装在电脑上的Python 3.6,但我建议选择使用Virtualenv来建立一个虚拟的环境,这样在虚拟环境里安装包之类的,不会影响电脑上本身已经装的,并且后续如果项目较多的话也便于区分和管理。


点击Create,创建好之后,PyCharm自动在项目的文件夹下建立了statictemplates文件夹和HarpQA.py,此外还有一个venv文件夹,是虚拟环境用的,我们可以暂时不用管它。(如果你的PyCharm是社区版的,那么无法像专业版那样建立Flask项目,对应的文件夹需要自己手动建立)。HarpQA.py中的代码如下:

from flask import Flask

app = Flask(__name__)


@app.route("/")

def hello_world(): 

    return "Hello World!"
    

if __name__ == "__main__":

    app.run()

首先从flask导入Flask,(我并没有pip install flask,为何能导入呢?我理解是建立flask项目的时候PyCharm自动帮我们做了这个事情),然后初始化一个Flask对象app,参数是__name____name__代表的是本身这个模块的名字,我们暂时不用理解为何要传入这个参数。接下来是一个hello world函数,并且有一个装饰器@app.route("/"),意思是说,当接收到"/"这个网址的请求时,执行hello world这个函数,即返回字符串"Hello World!"add_url_rule()也可以实现和@app.route一样的功能 ,但使用装饰器应该更pythonic吧),最后使用app.run()运行。运行脚本后,提示Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
我们在浏览器中输入http://127.0.0.1:5000/,就可以在网页中看到"Hello World!"了。


我们还可以使用debug模式来运行flask的服务端,开启debug模式后,修改代码不需要关闭程序,可以实时生效。有多种方法来开启debug模式:

app.run()中添加参数,变为app.run(debug=True)

run之前增加app.debug = True

新建config文件,在config文件中添加DEBUG = True,然后在程序中引入app.config.from_object(config)

run之前增加app.config["DEBUG"] = True

我们使用第3种方法,新建一个独立的文件来保存各种参数,以后项目增大的时候参数增多,便于管理。同样在项目文件夹下新建config.py文件,添加DEBUG = TrueDEBUG需大写。在HarpQA.pyimport config并添加app.config.from_object(config),再次运行HarpQA.py,提示:

 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 229-291-890
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

说明Debug模式已经打开,我们可以直接修改代码,例如把"Hello World!"
修改成"Hello"并保存,显示:

 * Detected change in "D:FlaskHarpQAHarpQA.py", reloading
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 229-291-890
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

说明DEBUG模式检测到了代码的变化并自动重载了,这时候刷新网页,结果也变成了只显示"Hello"


如果我们要处理很多URL,可以一个一个去给他们写对应的视图函数,这有时候是不切实际的,我们有更高效的做法,如以下代码:

@app.route("//")
def hello(name):
    return "Hello %s" % name

@app.route中装饰的地址是"//",注意name外面用了尖括号,代表name是一个参数,例如我们请求http://127.0.0.1:5000/Harp/这个网址,其中的name就是Harp,这个参数会传递给视图函数hello,最终会返回"Hello Harp"。我们可以给将写成,表示传入的参数是字符串类型的,其他的类型还有int,float,path,几种类型的区别可以在网上搜索对比一下,例如path可以将参数里的"/"也传递过来。

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

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

相关文章

  • flask入门1

    摘要:每天的内容跑起来模板引擎表单文件上传邮件发送一框架的简介模型负责数据的操作视图负责数据的展示控制器控制你的的操作以及视图模板的渲染在中叫做模型负责数据的操作控制你的的操作以及视图模板的渲染业务逻辑的操作模板负责数据的展示二架构三概念是 flask 每天的内容 flask跑起来 模板引擎 flask表单 文件上传邮件发送 flask-sqlalchemy 一、web框架的简介 M ...

    Freelander 评论0 收藏0
  • Flask二之快速入门

    摘要:一一个最小的应用是程序实例,一个项目只能有一个程序实例路由装饰器视图函数返回一个字符串把程序保存为用解释器运行访问,会看见问候。路由装饰器这个函数的返回值称为响应,是客户端接收到的内容。 一.一个最小的Flask应用 from flask import Flask app = Flask(__name__) #app是程序实例,一个项目只能有一个程序实例 @app.route(/) #...

    XGBCCC 评论0 收藏0

发表评论

0条评论

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