[Flask框架]学习简记

参考:

  https://blog.csdn.net/qq_38664371/article/details/80352102

  https://blog.csdn.net/weixin_30553065/article/details/96045980?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3


0x00

关于Web框架是我第一次接触,比较生疏,下面的笔记难免有遗漏或者错误的地方,欢迎各位私信交流斧正.


0x01 最简单的Flask应用

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return "hello world!"

if __name__ == '__main__':
    app.run()

代码作用:

  1.首先,我们导入了 Flask 类。这个类的实例将会是我们的 WSGI 应用程序。

  2.接下来,我们创建一个该类的实例,第一个参数是应用模块或者包的名称。 如果你使用单一的模块(如本例),你应该使用 __name__ ,因为模块的名称将会因其作为单独应用启动还是作为模块导入而有不同( 也即是 '__main__' 或实际的导入名)。这是必须的,这样 Flask 才知道到哪去找模板、静态文件等等。详情见 Flask的文档。

  3.然后,我们使用 route() 装饰器告诉 Flask 什么样的URL 能触发我们的函数。

  4.这个函数的名字也在生成 URL 时被特定的函数采用,这个函数返回我们想要显示在用户浏览器中的信息。

  5.最后我们用 run() 函数来让应用运行在本地服务器上。 其中 if __name__ =='__main__': 确保服务器只会在该脚本被 Python 解释器直接执行的时候才会运行,而不是作为模块导入的时候。


0x02  路由(装饰器)

  1)路由:@app.route()[app是Flask的实例化对象,可以改变].

  2)作用:flask通过装饰器来识别用户需要访问的网址路径,并在对应的路径做出相应的操作.例如上述代码,当访问url为"xxxxxxxxx/"时,装饰器会触发[hello_world()]函数,从而在访问该url时得到"hello world".

  3)举例:

@app.route('/')
def index():
    return 'This is index page'   
//当访问"/"时显示"This is index page"


@app.route('/hello')
def hello():
    return 'Hello World'

//当访问"/hello"时显示"Hello World"

总结:route()装饰器就是把一个函数绑定在一个url上,不仅如此,还可以构造含有动态部分的url,也可以在一个函数上附着多个规则.


0x03 变量规则

  1)<>定义路由的变量参数,<>需要起个名字.

  2)注意:参数类型默认是字符串,使用unicode编码.

  3)给url添加变量部分,可以把这些特殊的字段标记为<var_name>(括号中自定),这个部分将会作为参数传入到下面的函数,并支持使用<converter:var_name>来进行转换.

  4)举例(要在函数的括号内填入变量名,后面代码才可以正常执行):

1 @app.route('/hello/<user_name>')
2 def show user(user_name):
3     return 'User: %s' %user_name
4 
5 
6 @app.route('/index/<int:id>')
7 def show ID(id):
8     return 'ID:%d' %id  

  页面:


0x04 路由请求方式限定

  1)通过修改route()装饰器的methods参数可以改变路由对于服务器的请求方式.(默认是GET)

  2)例子:  

@app.route('/',methods=['GET','POST'])
def index():
    return "GET/POST"

  通过修改methods参数,通过'GET'和'POST'方法都可以对指定url进行访问.


0x05 关于Jinja2模板引擎

  1)模板:模板就是一个包含响应文本的文件,其中用占位符(变量)表示动态部分,告诉模板引擎其具体的值是需要从使用的数据中获取.

  2)渲染:使用真实值来替换变量,再返回最终得到的字符串,这个过程就是"渲染".

  3)返回一个模板文件:

@app.route('/')
def index():
    return render_template('index.html')

if __name__=='__main__':
    app.run()

render_template()函数对模板进行渲染,第一个参数一定是模板的名称,之后的参数可以为模板中的变量代码块传递值,这个参数可以是整数,字符串,浮点数,字典,列表,函数等等.值得注意的是,后面的参数都使用键值对的形式,表示模板中对应变量的真实值.

"index.html"是模板文件的名称,它是templates文件夹下的一个文件.


0x06 模板中的代码块

  1)变量代码块

    a.变量使用双层大括号({{var_name}})括起来,这种语法就是变量代码块.

    b.注释:使用{#  #}进行注释,如{# {{var_name}} #}.

  2)控制代码块

    a.使用{% %}来定义控制代码块,可以实现一些逻辑,比如if或者循环.   

{? if (条件)?}
    代码
原文地址:https://www.cnblogs.com/hello-there/p/12776502.html