Flask框架

Flask框架

Flask是一个微型框架,对外部库的依赖性非常小。它是一个非常轻的框架,让我们可以自由地做我们想做的事情。

在本章中,我们将使用Python和Flask框架建立一个项目。

Flask的启动和配置

像大多数广泛使用的python库一样,Flask包可以从Python包索引(PPI)中安装。让我们先创建一个目录(在本章中,我们创建了一个名为 flaskProject 的目录),然后创建一个虚拟环境(并称其为 flaskEnv ),所有项目相关的依赖都将被加载(包括flask)。你也可以安装flask-sqlalchemy,这样你的flask应用程序就有了与SQL数据库通信的简单方法。

安装完flask后,你的flaskEnv(我们的虚拟环境名称)将显示如下内容

Flask框架

用flask创建一个应用程序

通过安装flask,我们可以用几行代码创建一个简单的 “flask中的hello应用程序 “,如下所示

Flask框架

在终端键入以下内容 –

$python flaskapp.py

And you can see the following output −

http://127.0.0.1:5000/localhost:5000 上运行

Flask框架

下面是对我们在示例代码中所做工作的解释 –

  • 首先,我们导入Flask类库。这个类的一个实例就是WSGI应用。

  • 其次,我们创建一个这个类的实例。应用程序包或模块名称是我们的第一个参数。这是强制性的,Flask知道在哪里可以找到静态文件、模板和其他文件。

  • 接下来是路由()装饰器,我们用来知道哪个URL应该触发我们的方法/函数。

创建URL路由

URL路由使你的Web应用中的URL易于记忆。我们现在将创建一些URL路由 –

/hello
/members
/members/name

我们可以根据上述URL编写以下代码,并将其保存为app.py。

from flask import Flask, render_template

app = Flask(__name__)

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

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

@app.route("/members")
def members():
   return "Members"

@app.route("/members/<name>/")
def getMember(name):
   return name

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

在重新启动应用程序时,我们使用以下几行代码在不同的URL上获得不同的输出 –

$ python app.py

运行在http://localhost:5000/

我们将在浏览器中得到以下输出 −

Flask框架

我们可以在浏览器中尝试其他的URL,如下图所示

在 http://localhost:5000/hello 上运行,将得到以下输出 –

Flask框架

在 http://localhost:5000/members 上运行,将得到 –

Flask框架

在 http://localhost:5000/members/TutorialsPoint/ 上运行,将得到以下输出结果 –

Flask框架

但通常我们不想返回一个字符串(如上),我们要返回模板。为此,我们想使用flask的一个函数 “render_template “,并返回带有一些输入的render_template。因此,下面的函数将完成我们的工作

from flask import render_template
return render_template(‘home.html’)

让我们创建一个文件夹模板,并在其中放置home.html文件。

接下来,我们将讨论布局问题。我们将设计一个包含头部和身体标签的布局,并将当前的视图或当前的模板包裹起来,而不是为每一个模板使用html头部标签和身体标签。为此,我们必须创建一个单独的文件,称之为 layout.html 在这个文件中,我们可以放入正常的head标签、body标签和所有其他需要的标签。

我们可以用以下几行代码来创建新的layout.html

<!DOCTYPE html>
<html>
   <head>
      <meta charset="utf-8">
      <title>MyFlaskApp</title>
      <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
   </head>
   <body>
      {% include 'includes/_navbar.html' %}
      <div class="container">
      {% block body %}
      {% endblock %}
      </div>
      <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js">
      </script>
   </body>
</html>

在上面的代码中,我们给出了标题轨道,MyFlaskAp,在头部使用css cdn,在主体块使用javascript来启用bootstrap。

现在,我们必须为每个页面创建导航条。为此,我们必须首先创建一个include文件夹,然后在其中创建_navbar.html文件。现在在_navbar.html中,我们必须使用getbootstrap.com的标准启动器模板。新创建的_navbar.html文件将如下所示

Flask框架

并将这个_navbar.html文件包含在我们的layout.html文件中。

{% include 'includes/_navbar.html' %}

由于我们有布局块,我们可以在我们的主页文件(home.html)中扩展这个块。

我们的home.html文件可以使用以下代码来创建

{% extends 'layout.html' %}
{% block body %}
   <div class="jumbotron text-center">
      <h1>Welcome to FlaskApp</h1>
      <p>This application is built on Flask webframework!</p>
   </div>
{% endblock %}

利用这一点,如果我们尝试运行我们的flaskapp.py文件,那么我们可以在浏览器中看到以下输出 —

Flask框架

现在我们要激活(目前标签不工作)我们的 关于 标签。为about标签创建一个路由并创建一个模板文件, about.html 。

在appflask.py中关于标签的路由将如下所示

Flask框架

about.html文件将有以下内容

Flask框架

因此,首页和关于现在已经得到了照顾。对于文章,我们可以在根目录下创建一个新的文件(data.py),在那里我们放置数据并在我们的网页上调用它。

data.py

def Articles():
   articles = [
      {
         'uid': 1,
         'title': 'Article_One',
         'body': 'Flask, being a microframework, often requires some repetitive step
            to get a third party library working. Because very often these steps could 
            be abstracted to support multiple projects the Flask Extension Registry 
            was created.',
         'Author': 'Rajesh Joshi',
         'Created-on': '07-09-2018'
      },
      {
         'uid': 2,
         'title': 'Article_Two',
         'body': "Flask, being a microframework, often requires some repetitive steps
            to get a third party library working. Because very often these steps could 
            be abstracted to support multiple projects the Flask Extension Registry 
            was created.",
         'Author': 'Rajesh J',
         'Created-on': '07-09-2018'
      },
      {
         'uid': 3,
         'title': 'Article_Three',
         'body': 'Flask, being a microframework, often requires some repetitive steps
            to get a third party library working. Because very often these steps could be
            abstracted to support multiple projects the Flask Extension Registry 
            was created.',
         'Author': 'Joshi Rajesh',
         'Created-on': '07-09-2018'
      }
   ]
   return articles

下面是 articles.html 的代码,它将显示每个 uid 的文章标题。

{% extends 'layout.html' %}
{% block body %}
   <h1>Articles</h1>
   {% for article in articles %}
      <li class="list-group-item">
         <a href="article/{{article.uid}}"> {{article.title}}</a>
      </li>
   {% endfor %}
{% endblock %}

总而言之,Flask是最受欢迎的Python Web框架之一,因为它是轻量级的。虽然它是微型的,但它是一个可扩展的python web框架。通过提供所需的功能,Flask加速了简单Web应用的开发。所以Flask,更适合于较小的、不太复杂的应用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程