flask入门学习笔记(一)

flask入门学习笔记(一),第1张

flask入门学习笔记(一)
  • flask是什么
  • hello world
    • 源码
    • 运行
  • HTML 转义(escaping)
  • URL
    • routing
    • 动态URL
    • 路由反向解析函数url_for()

内容主要来源于flask官方文档
本文代码均在ubuntu环境下运行,主要集中于内容学习,安装过程不详细展开。
作为博主自己的学习记录,但是如果能帮到你我也很开心啦~

flask是什么

Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。其内核简单但是具有高扩展性。

hello world 源码
from flask import Flask

app = Flask(__name__)#创建一个Flask类实例,第一个参数是模块或者包的名称

@app.route("/")#告诉Flask激活函数的URL
def hello_world():#Flask返回的默认类型是HTML
    return "

Hello, World!

"
运行

方法1

$ export FLASK_APP=hello
$ flask run

hellopython文件名,第一行我们需要通过导出 FLASK_APP 环境变量来告诉终端要使用的应用程序,然后运行。
方法2

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

在python文件中添加如上函数,在shell中执行python文件

python hello.py

WARNING: This is a development server. Do not use it in a production deployment.
这会启动一个非常简单的内置服务器,它足以用于测试,但可能不是您想要在生产中使用的。有关部署选项,请参阅部署选项。

由于我是在服务器上运行的代码,所以无法直接访问127.0.0.1:5000,官方文档也给出了把服务器地址公开的解决方案,简单运行指令修改为:

$ export FLASK_APP=hello
$ flask run --host=0.0.0.0

补充学习:python中__name__和__main__的含义1
模块被执行的时候,__name__等于文件名(包含了后缀.py)。如果import到其他模块中,则__name__等于模块名称(不包含后缀.py)。而“main”等于当前执行文件的名称(包含了后缀.py)。所以当模块被直接执行时,name == 'main’结果为真;而当模块被import到其他模块中时,name == 'main’结果为假,就是不调用对应的方法

HTML 转义(escaping)
from markupsafe import escape

@app.route("/")
def hello(name):
    return f"Hello, {escape(name)}!"

通俗来说,就是如果我们想要在页面上打印变量name,直接*return "Hello,name"肯定是行不通的,这样页面只会打印变量名而不是变量值,因此我们需要通过escape()*对齐进行转义 *** 作,它通常被省略。
的含义会在动态URL中描述。

URL routing

使用*route()*绑定函数到一个URL上。

@app.route('/')
def index():
    return 'Index Page'

@app.route('/hello')
def hello():
    return 'Hello, World'
动态URL
from markupsafe import escape

#当我们在浏览器输入’ip/user/<任意变量>‘ 时,页面上会打印 'User 任意变量',例子中为
@app.route('/user/')
def show_user_profile(username):
    # show the user profile for that user
    return f'User {escape(username)}'

#当我们需要转换变量类型时,使用<转换类型:变量名>形式转换,例子中为
@app.route('/post/')
def show_post(post_id):
    # show the post with the given id, the id is an integer
    return f'Post {post_id}'

@app.route('/path/')
def show_subpath(subpath):
    # show the subpath after /path/
    return f'Subpath {escape(subpath)}'

可转换类型有

两个特别的URL/重定向行为

@app.route('/projects/')
def projects():
    return 'The project page'

@app.route('/about')
def about():
    return 'The about page
路由反向解析函数url_for()

url_for的主要目的是:为了按照路由列表和page参数生成一个动态的url地址。23
这一块没怎么看明白,先跳过以后再看看。


  1. Python中__name__详解 ↩︎

  2. url_for函数 ↩︎

  3. url_for的使用 ↩︎

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/919072.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存