参考:快速上手
与 python-web框架flask:搭建一个完整程序 配合服用,效果更佳。
文章目录
1、flask全局应用对象
1、创建一个flask全局应用对象。
app = Flask(__name__)
创建一个全局对象非常简单,name 指定这个全局对象的 应用模块或者包的名称。
我们可以点开Flask这个方法,里面可以配置一些参数,我们重点讲几个参数的意思。也是正常我们会用到的:
def __init__(
self,
import_name,
static_url_path=None,
static_folder="static",
static_host=None,
host_matching=False,
subdomain_matching=False,
template_folder="templates",
instance_path=None,
instance_relative_config=False,
root_path=None,
):
看一下static_folder,这个参数,默认是static,这个参数是我们加载静态资源的相对路径, 有时候我们的目录机构可能不叫static,这个时候如果还是使用默认配置就找不到我们的静态资源了,不要慌,我们只需要修改这个路径既可。
然后还有一个同样配置的参数我们需要看一下就是 template_folder,这个是配置我们的html模板的相对地址,和上面的static的配置类似。
注意:这边的相对路径是相对于当前的启动的py文件,比如说当前的目录结构是这样的:
那么我们的static_folder就应该配置为 . ./static,因为这个路径是相对于启动函数
2、启动和端口监听
我们的程序既然有了全局应用对象,那么怎么去启动呢,有两种方式,如果在我们的ide:pyCharm中启动,我们可以用run方法来实现:
app.run(
host='127.0.0.1',
port=8082,
debug=True
)
非常简单,我们就可以启动一个应用,当然这只是最简单的,还有很多拓展工作没做
在shell机器下面我们的启动比较麻烦,命令如下:
$env:FLASK_APP = "main.py"
因为没有真实尝试过,所以具体还是以官方文档为主:It`s 官方文档-部署
2、路由
1、静态路由
正常情况下,像我们的欢迎页之类的都是静态路由,不携带动态参数,我们来看一下他的书写方式(注:app是我们的flask全局应用对象),这边采用route方法:
@app.route('/')
def index():
return 'Index Page'
2、带参数路由
如果我们的一个路径需要携带参数怎么办呢,不要慌,flask拥有对应的参数匹配规则
这边的参数传递有两种方式,一种是原始的参数传递<variable_name>
,一种是参数转换传递<converter:variable_name>
,而方法在接收到参数的时候,可以直接进行使用,看一下这几个路由:
@app.route('/user/<username>')
def show_user_profile(username):
# show the user profile for that user
return 'User %s' % escape(username)
@app.route('/post/<int:post_id>')
def show_post(post_id):
# show the post with the given id, the id is an integer
return 'Post %d' % post_id
@app.route('/path/<path:subpath>')
def show_subpath(subpath):
# show the subpath after /path/
return 'Subpath %s' % escape(subpath)
第一个是普通的参数传递,可以看到我们在函数入参里面直接使用,第二三个是转换后的参数,对应的转换规则如下:
转换关键字 | 作用 |
---|---|
string | (缺省值) 接受任何不包含斜杠的文本 |
int | 接受正整数 |
float | 接受正浮点数 |
path | 类似 string ,但可以包含斜杠 |
uuid | 接受 UUID 字符串 |
3、路由重定向
其实我感觉这个没啥可说的,但是可能在开发的过程中会误写一些东西,导致我们的程序运行出错&