1.学习一个新的东西,首先需要先去学会怎么导入他
from flask import Flask
2.hello world
永远永远 要记得hello world
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return "hello world!"
if __name__ ==' __main__':
app.run()
1需要注意的是,你所保存的python文件的名字,不能为flask。血泪教训,不然他就会在你的py文件之下寻找Flask,结果当然是没有。
2 另外还有一个经常用到的东西 if name ==' main':
简单来说,上面那个语句的功能就是来判断是否是在直接运行该.py文件
如果要是直接运行当前python文件,那么它下面的方法就会被调用。而如果要是从别的文件调用这个文件,那么它下面的方法就不会触发。
好了,既然注意事项讲完了,那么,就正式的来了解上面的那个小程序吧
首先第一句自然不用说是导入。
接下来第二行创建了一个实例。注意其中的参数是必须的,它代表应用模块或者包的名称。而本例中只有一个文件,自然就是_ name _。
接下来第三行,第四行,第五行合起来看,稍微了解python的应该知道,第三行调用的是flask自己的一个装饰器,他的作用是告诉我们的app什么样的url才能触发下面的函数。而下面的函数自然不用我说,返回了熟悉的hello world。
下面的run函数则是让我们写的小程序运行在我们的服务器上,欲关闭服务器,按 Ctrl+C。
麻雀虽小 五脏俱全 几行代码便已经初具一个网页的雏形。
3.路由
接下来就稍微对路由系统进行一个简单的入门,并不要想着一开始就完全的掌握这个框架,是不现实的。
路由系统,就像你家的路由器,对你想访问那个网页进行分类和导向。而flask里面的路由系统就是对你访问的url进行分类的一个系统。
flask上面的路由系统主要靠route装饰器来将对应的函数绑定到对应的url上面,
而上面的hello world 已经简单的将route装饰器的用法简单的讲了一下。比如你要专门做一个index的url可以这么写
@app.route('/index')
def index():
return "index page"
然而,仅仅有这些是不够的,程序员永远是不知满足的,静态的url并不能满足我们的要求,我们可以构造一种动态筛选url的方法。
通过把 URL 的一部分标记为 <variable_name> 就可以在 URL 中添加变量。标记的 部分会作为关键字参数传递给函数。通过使用 <converter:variable_name> ,可以 选择性的加上一个转换器,为变量指定规则。请看下面的例子:
@app.route('/user/<username>')
def show_user_profile(username):
# show the user profile for that user
return 'User %s' % username
此时有一个小问题,我们在用路由定位url的时候,url的尾部都没有添加斜杠,不添加斜杠,flask在访问这个url的时候,尾部会加上一个斜杠。而如果访问这个url的时候加上了一个斜杠,就会出现404错误,保证了url的唯一(虽然我也不太懂这块)。
url的构建
在flask中有一个url_for()函数,它用于构建指定函数的url。它将函数名称作为第一个参数。可以接收任意个关键字参数。每一个关键字参数对应url中的变量,未知变量将添加到url中作为查询参数
此时问题就出现了,为什么要使用url_for()函数,将url写死不是更稳定吗
1.反转通常比硬编码 URL 的描述性更好。
2.你可以只在一个地方改变 URL ,而不用到处乱找。
3.URL 创建会为你处理特殊字符的转义和 Unicode 数据,比较直观。
4.生产的路径总是绝对路径,可以避免相对路径产生副作用。
5.如果你的应用是放在 URL 根路径之外的地方(如在 /myapplication 中,不在 / 中), url_for() 会为你妥善处理。
网友评论