Flask学习笔记(二)

导读:本篇文章讲解 Flask学习笔记(二),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

Flask学习笔记(二)

前言

前面我们学习了flask的安装和用一个小程序测试flask是否安装成功,并且提及到jinja2模板。

jinja2模板使用

为了使用jinja2模板,我们需要在当前网站目录下建立一个templates的目录,将在templates文件夹中创建一个名为index.html的文件,其中的内容如下:

<html>
   <head>
       <meta charset="utf-8" />
       <title>jinja2模板</title>
   </head>
   <body>
      {% if name %}
       <h1>你好, {{ name }}! </h1>
      {% else %}
       <h2>你好!小红!</h2>
      {% endif %}
   </body>
</html>

jinja2模板扩充了HTML的语法,其中加入了逻辑判断和变量,变量是用双嵌套花括号{{}}来引用的,而逻辑控制则用{%%}来标识。这样可以动态控制HTML显示的内容,比如上述代码中,如果name变量有给出小明,则页面显示你好,小明,否则只显示你好!小红!

创建一个新的路由:

from flask import render_template
​
@app.route("/hello")
def hello():
   return render_template('index.html', name="小明")

运行项目后访问http://127.0.0.1:8090/hello,即会显示如下界面:

Flask学习笔记(二)

路由中的参数

为了动态变化预定义模板中的人员姓名,我们需要向路由中传递一个参数,形式如下:http://127.0.0.1:8090/hello/小绿,下面代码演示了这个功能如何实现:

@app.route("/hello/<name>/")
def hello(name):
    return render_template('index.html', name=name)

观察代码会发现其中加入了<name>字样,这意味着在路由中添加了一个名为name的变量,相应地,由该路由修饰的函数需要接收name来进行处理,这时在浏览器地址栏输入http://127.0.0.1:8090/hello/小绿,则显示的图形如下所示:

Flask学习笔记(二)

这里有一个问题,就是当我们在路由上不输入参数的时候会是怎么样的呢?即直接输入http://127.0.0.1:8090/hello,根据上面我们的index.html,当没有接受到name变量时,应该输出你好!小红!,但是实际情况如下:

Flask学习笔记(二)

可以看到,明显报错了,从显示的出错信息可以看出,提示我们输入的url地址有问题,仔细分析后会发现,带参数的地址和不带参数的地址被Flask解释为不同的地址,这就需要用不同的路由都指向hello()函数,修改后的代码如下:

@app.route("/hello/")
@app.route("/hello/<name>/")
def hello(name=''):
    return render_template('index.html', name=name)

添加一个路由后,Flask就会正确解析空参数的地址了,但还有一个要注意的地方是需要在映射的函数hello()中给name赋予一个空字符串做为默认参数,这样在匹配/hello/时,会将默认参数值传入index.html模板中,这样就实现了我们的意图,显示如下:

Flask学习笔记(二)

路由中参数的类型

Flask中,路由中变量默认是字符串类型,其实除了字符串类型外,其实还有int,float,path

下面是有关代码:

@app.route("/num1/<int:number1>")
def num1(number1):
    return f"接收的整数数字是:{number1}"
​
@app.route("/num2/<float:number2>")
def num2(number2):
    return f"接收的浮点数字是:{number2}"
​
@app.route("/mypath/<path:curpath>")
def mypath(curpath):
    return f"接收的路径是:{curpath}"

当为路由指定转换器后,凡不符合转换器指定内容的,页面将弹出404错误。

 

打印当前IP地址及URL

有时候我们会需要得到IP地址及URL,此时用到Flask中的request对象,演示如下:

from flask import request
​
@app.route("/getpath/")
def getpath():
    return f"当前IP地址:{request.remote_addr},<br/> 当前URL:{request.url},<br/>当前路径:{request.path}"
​

Flask学习笔记(二)

小结

本文对jinja2模板使用和Flask的路由进行了较详细的分析,如何利用路由进行整个系统的规划,是很重要的问题。

Flask学习笔记(一)

Flask学习笔记(三)

Flask学习笔记(四): Flask与数据库连接

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/61490.html

(0)
小半的头像小半

相关推荐

极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!