Flask

1.简介

Python Flask是一个轻量级的Web应用程序框架,它是使用Python编写的,用于快速开发Web应用程序和API。它的设计理念是简单、易用和可扩展。

以下是Python Flask的一些主要特点:

  • 轻量级:Flask没有多余的库和工具包,使其非常轻量级,这也意味着您可以根据需要添加自己的库。
  • 易用性:Flask的API非常简单,易于理解和学习,因此它非常适合初学者。
  • 可扩展性:Flask是可扩展的,您可以添加插件来增强其功能,并且可以很容易地将其与其他库和框架集成。
  • 灵活性:Flask允许您选择所需的组件,例如模板引擎、数据库、表单验证等等。
  • 集成度高:Flask支持与其他Python库和框架的集成,如SQLAlchemy、WTForms、Jinja2等等。
  • RESTful支持:Flask易于使用RESTful API,并且可以轻松地创建RESTful Web服务。

本文中,将构建一个小型 Web 应用程序,演示如何使用 psycopg2 库,允许您在 Python 中与 HighgGo 数据库进行交互。您将在 Flask 中使用它来执行基本任务,例如连接到数据库服务器、创建表、向表中插入数据以及从表中检索数据。

2.Flask 架构

Flask 是一个使用 Python 编写的 Web 应用程序框架。它使用了 Werkzeug 工具箱和 Jinja2 模板引擎。
Flask 框架主要由以下模块组成:

image

  • 应用模块:Flask 的核心模块,是整个 Web 应用程序的入口,负责接收 HTTP 请求并返回响应。它还负责路由、错误处理、上下文等功能。
  • 路由模块:Flask 使用装饰器来定义 URL 路由和视图函数之间的映射关系。
  • 视图模块:视图函数是 Flask Web 应用程序的核心,它处理 HTTP 请求并返回响应,可以返回 HTML 页面、JSON 数据等。
  • 模板模块:Flask 使用 Jinja2 模板引擎来生成 HTML 页面。模板引擎提供了丰富的语法和过滤器,可以轻松地生成复杂的 HTML 页面。
  • 数据库模块:Flask 可以轻松地与多种数据库集成,包括 MySQL、PostgreSQL、SQLite 等。
  • 表单模块:Flask-WTF 是 Flask 的表单处理扩展,提供了方便的表单处理方法,可以轻松地创建表单、验证表单数据等。
  • 扩展模块:Flask 的扩展模块提供了各种功能,如邮件发送、缓存、登录认证等。

3.加载 psycopg2

具体操作步骤请参考 Psycopg2 接口说明文档。

4.创建一个简单的 Flask 应用

4.1.数据库初始化

create user flask password 'Qwer@1234';
create database flask_db owner flask;

flask_app 目录创建文件 init_db.py ,添加如下代码

import psycopg2

conn = psycopg2.connect(
host='192.168.100.101',
database='flask_db',
user='flask',
password='Qwer@1234')

# Open a cursor to perform database operations
cur = conn.cursor()

# Execute a command: this creates a new table

cur.execute('drop table if exists student;')

cur.execute('create table student (stu_no serial primary key,'
'stu_name varchar (150) not null,'
'stu_sex varchar (10),'
'stu_age integer ,'
'stu_birthday timestamp);'
)

# insert data into the table

cur.execute('insert into student (stu_name, stu_sex, stu_age, stu_birthday)'
'values (%s, %s, %s, %s)',
('小明',
'男',
8,
'2016-01-01')
)


cur.execute('insert into student (stu_name, stu_sex, stu_age, stu_birthday)'
'values (%s, %s, %s, %s)',
('小华',
'女',
7,
'2017-12-12')
)

conn.commit()

cur.close()
conn.close()

使用python命令在终端中运行init_db.py文件,执行完成且没有错误,一个新的 student 表将添加到您的flask_db数据库中

python init_db.py
mkdir templates
vim templates/base.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %} {% endblock %}- FlaskApp</title>
<style>
nav a {
color: #d64161;
font-size: 3em;
margin-left: 50px;
text-decoration: none;
}

.stu {
padding: 20px;
margin: 10px;
background-color: #f7f4f4;
}

</style>
</head>
<body>
<nav>
<a href="{{ url_for('index') }}">FlaskApp</a>
</nav>
<hr>
<div class="content">
{% block content %} {% endblock %}
</div>
</body>
</html>

打开一个名为index.html的模板。这是您在app.py文件中引用的模板:

{% extends 'base.html' %}

{% block content %}
<h1>{% block title %} Students {% endblock %}</h1>
{% for student in students %}
<div class='stu'>
<h3>No.{{ student[0] }}</h3>
<i><p>姓名:{{ student[1] }}</p></i>
<i><p>性别:{{ student[2] }}</p></i>
<i><p>年龄:{{ student[3] }}</p></i>
<i><p>生日:{{ student[4] }}</p></i>
</div>
{% endfor %}
{% endblock %}

运行应用程序

flask run

在开发服务器运行的情况下,使用浏览器访问以下 URL:

http://127.0.0.1:5000/

image