如何用python做后端写网页-flask框架 什么是Flask安装flask模块Hello World更深一步:数据绑定后端传入数据从前端获取数据 数据库连接screen创建后台查看删除后台 结束

什么是Flask

Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。以下程序均在自己服务器上运行(在vs code利用ssh进行连接)

安装flask模块

首先使用pip进行安装:

pip install flask

在所在项目文件夹下创建templates文件夹(用于存放html等文件)和app.py,如图:

Hello World

我们可以在templates文件中新建index.html文件,其内容如下:

Hello Word!

在上一步建立的app.py文件中,写入:

from flask import Flask, render_template, request, jsonify

#创建Flask对象app并初始化

app = Flask(__name__)

#通过python装饰器的方法定义路由地址

@app.route("/")

#定义方法 用jinjia2引擎来渲染页面,并返回一个index.html页面

def root():

return render_template("index.html")

#定义app在8080端口运行

app.run(port=8080)

我们写好app.py文件后,我们按F5 运行,即终端输出:

我们访问服务器的8080端口,即Hello World出现在眼前!

更深一步:数据绑定

上一步我们简单地搭建好一个静态网页,它的显示只取决于前端,是固定不变的。我们如何做到从后端传递数值并在前端显示呢?这就需要使用数据绑定.

数据绑定,顾名思义,是为了实现一种“动态”的效果,后台的数据更新了,前端页面也自动更新;前端页面上的数据更新了,后台的数据也自动更新。在flask框架中,后端先将网页进行加载,并把传入的数据放在合适的位置后使用jinjia2引擎渲染,最后将渲染好的页面返回。

后端传入数据

我们首先在render_template函数中传递需要绑定的数据name,age:

from flask import Flask, render_template, request, jsonify

#创建Flask对象app并初始化

app = Flask(__name__)

#通过python装饰器的方法定义路由地址

@app.route("/")

#定义方法 用jinjia2引擎来渲染页面,并返回一个index.html页面

def root():

return render_template("index.html",name="zxy",age=21)

#定义app在8080端口运行

app.run(port=8080)

在前端index.html中,我们获取传入的数据:

我是{{name}},今年{{age}}岁

我们再按F5运行,并访问服务器的8080端口,页面显示:

从前端获取数据

那么,前端提交的数据如何传到后端呢?

在这里,我使用ajax实现数据的异步传输。我们将主要步骤概括为:

1.在前端页面中引入jQuery

2.创建两个输入框,一个按钮用于输入数据和事件提交。

3.在js中编写事件,使用ajax进行数据提交

4.在后端app.py中编写对应的事件处理函数

前端index.html内容如下:

请输入你的姓名和年龄

提交

/*在这里编写submit()事件*/

function submit() {

$.ajax({

url: "submit", /*数据提交到submit处*/

type: "POST", /*采用POST方法提交*/

data: { "name": $("#name").val(),"age":$("#age").val()}, /*提交的数据(json格式),从输入框中获取*/

/*result为后端函数返回的json*/

success: function (result) {

if (result.message == "success!") {

alert(result.message+"你的名字是"+result.name+",你的年龄是"+result.age)

}

else {

alert(result.message)

}

}

});

}

当我们完成ajax数据提交后,则在后端app.py处编写对应的处理函数submit()。

app.py中的内容如下:

from flask import Flask, render_template, request, jsonify

#创建Flask对象app并初始化

app = Flask(__name__)

#通过python装饰器的方法定义路由地址

@app.route("/")

#定义方法 用jinjia2引擎来渲染页面,并返回一个index.html页面

def root():

return render_template("index.html")

#app的路由地址"/submit"即为ajax中定义的url地址,采用POST、GET方法均可提交

@app.route("/submit",methods=["GET", "POST"])

#从这里定义具体的函数 返回值均为json格式

def submit():

#由于POST、GET获取数据的方式不同,需要使用if语句进行判断

if request.method == "POST":

name = request.form.get("name")

age = request.form.get("age")

if request.method == "GET":

name = request.args.get("name")

age = request.args.get("age")

#如果获取的数据为空

if len(name) == 0 or len(age) ==0:

return {'message':"error!"}

else:

return {'message':"success!",'name':name,'age':age}

#定义app在8080端口运行

app.run(port=8080)

编写完成后,我们访问服务器8080端口进行测试,结果如下:

数据库连接

数据库是一个网页不可或缺的部分。前面的例子中,数据都是从前端获取或者随机输入的。如何从数据库中获取数据呢?

首先我们引入pymysql库 并编写Database类,该类写在database.py中:

import pymysql

class Database:

#设置数据库的连接参数,由于我是在服务器中编写的,所以host是localhost

host = "localhost"

user = "root"

password = "Zhangxy0212!!"

#类的构造函数,参数db为欲连接的数据库。该构造函数实现了数据库的连接

def __init__(self,db):

connect = pymysql.connect(host=self.host,user=self.user,password=self.password,database=db)

self.cursor = connect.cursor()

#类的方法,参数command为sql语句

def execute(self, command):

try:

#执行command中的sql语句

self.cursor.execute(command)

except Exception as e:

return e

else:

#fetchall()返回语句的执行结果,并以元组的形式保存

return self.cursor.fetchall()

我们可以在templates文件中新建一个data.html文件,用于创建一个新的页面,文件内容如下:

请输入你的名字

提交

function show() {

$.ajax({

url: "show",

type: "POST",

data: { "name": $("#name").val()},

/*不要忘记 result为后端处理函数的返回值!*/

success: function (result) {

if (result.status == "success") {

$("#result").text($("#name").val() + "是" + result.message)

}

else {

$("#result").text("出错了")

}

}

});

}

按钮的触发事件为show();接下来我们在app.py中编写 渲染data.html页面的函数data()和事件处理函数show().

切记,这两个函数一定要加在 创建app对象 和 定义运行端口之间!!

由于我们要使用写好的Database类进行数据库的连接,因此需要在app.py顶部进行引入:

from database import Database

data()函数和show()函数如下:

#通过python装饰器的方法定义路由地址

@app.route("/data")

#定义方法 用jinjia2引擎来渲染页面,并返回一个index.html页面

def data():

return render_template("data.html")

#app的路由地址"/show"即为ajax中定义的url地址,采用POST、GET方法均可提交

@app.route("/show",methods=["GET", "POST"])

def show():

#首先获取前端传入的name数据

if request.method == "POST":

name = request.form.get("name")

if request.method == "GET":

name = request.args.get("name")

#创建Database类的对象sql,test为需要访问的数据库名字 具体可见Database类的构造函数

sql = Database("test")

try:

#执行sql语句 多说一句,f+字符串的形式,可以在字符串里面以{}的形式加入变量名 结果保存在result数组中

result = sql.execute(f"SELECT type FROM type WHERE name='{name}'")

except Exception as e:

return {'status':"error", 'message': "code error"}

else:

if not len(result) == 0:

#这个result,我觉得也可以把它当成数据表,查询的结果至多一个,result[0][0]返回数组中的第一行第一列

return {'status':'success','message':result[0][0]}

else:

return "rbq"

我们按F5 运行app.py文件后,访问http://121.41.111.94/data

运行结果如图:

多提一句,数据表type中的内容如下:

screen

至此,使用flask框架搭建简单网页的基本流程结束啦!

我想你们心中一定有个疑问,每次运行python程序总是需要按F5运行,如果关掉 VS Code ,那么进程将会被杀掉,服务器页面就无法显示,如图:

那么我们就需要在服务器中使用screen创建一个后台,将app.py程序放在后台中运行,达到持续运行的目的。

创建后台

由于我的服务器是Centos,所以我使用 yum install screen的方式下载的screen。

下载完成后,在服务器的任意位置 输入screen命令即可创建后台,后台如图:

即上面会显示screen 0.

我们进入工程所在的文件try 输入命令:python app.py 如图:

这样 我们再访问一下121.41.111.94,会发现 网站已经启动啦!我们即使关闭命令行,程序也继续在后台运行。

查看删除后台

如果我们需要查看后台的运行情况,在服务器中输入命令:screen -x

如果需要停止后台运行,则先通过 screen -x [pid号] 进入某一后台。进入之后 Ctrl+C即可停止运行。

如果删除后台,则先通过 screen -x [pid号] 进入某一后台,进入之后输入exit

结束

到此这篇关于利用python实现后端写网页(flask框架)的文章就介绍到这了,更多相关python后端写网页内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

python flask后台框架_利用python实现后端写网页(flask框架)相关推荐

  1. 如何用python做后端写网页-flask框架

    如何用python做后端写网页-flask框架 什么是Flask 安装flask模块 Hello World 更深一步:数据绑定 后端传入数据 从前端获取数据 数据库连接 screen 创建后台 查看 ...

  2. python处理nc数据_利用python如何处理nc数据详解

    利用python如何处理nc数据详解 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  利用python如何处理nc数据详解.txt ] (友情提示:右键点上行txt ...

  3. python post请求 上传图片_利用python模拟实现POST请求提交图片的方法

    本文主要给大家介绍的是关于利用python模拟实现POST请求提交图片的方法,分享出来供大家参考学习,下面来一看看详细的介绍: 使用requests来模拟HTTP请求本来是一件非常轻松的事情,比如上传 ...

  4. python自定义函数画图_利用Python绘图和可视化(长文慎入)

    Python有许多可视化工具,但是我主要讲解matplotlib(http://matplotlib.sourceforge.net).此外,还可以利用诸如d3.js(http://d3js.org/ ...

  5. python爬取音乐_利用Python对网易云音乐进行爬取!无所不爬的爬虫啊!

    今天,我们利用Python 中的selenium爬取网易云音乐中林俊杰<将故事写成我们>的评论,具体界面如下: 私信小编01 获取数十套PDF!爬虫 web都有的呢! 具体代码如下: #此 ...

  6. python实现邮件客户端_利用python实现简单的邮件发送客户端示例

    脚本过于简单,供学习和参考.主要了解一下smtplib库的使用和超时机制的实现.使用signal.alarm实现超时机制. #!/usr/bin/env python # -*- coding: ut ...

  7. python制作图片墙_利用python生成照片墙的示例代码

    PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了.其官方主页为:PIL. PIL历 ...

  8. 利用python进行数据分析数据_利用Python进行数据分析

    1.注释以及在Subplot上绘图 除标准的图表对象之外,你可能还希望绘制一些自定义的注释(比如文本.箭头或其他图形等). 注释可以通过text.arrow和annotate等函数进行添加.text可 ...

  9. python情感分析语料库_利用Python实现中文情感极性分析

    情感极性分析,即情感分类,对带有主观情感色彩的文本进行分析.归纳.情感极性分析主要有两种分类方法:基于情感知识的方法和基于机器学习的方法.基于情感知识的方法通过一些已有的情感词典计算文本的情感极性(正 ...

  10. python制作电脑软件_利用PYTHON制作桌面版爬虫软件(一)

    抱歉,对长沙房地产数据的挖掘与分析[三],想了蛮久,觉得对自己的分析结果不是很理想.等我完善好了,我再发出来吧.今天继续开启新的一专题.主要讲解如何用PYTHON实现简单的桌面软件的制作. 题外话,我 ...

最新文章

  1. Laravel Dcat-admin 详情页多栏布局开发
  2. iOS 项目中用到的一些开源库和第三方组件
  3. Java黑皮书课后题第6章:**6.29(双素数)双素数是指一对差值为2的素数。例如,3和5就是一对双素数,5和7是一对双素数,而11和13也是一对双素数。编写程序,找出小于1000的所有双素数
  4. bashrcprofile
  5. 列举微型计算机的主要性能指标,计算机基础考试纲.ppt
  6. mysql导出数据大概得多久_MySQL 导出数据
  7. 计算机应用基础三次没有通过怎么办,计算机应用基础第三次作业
  8. 有关彩票的python编程教程入门_python入门教程NO.6 用python做个简单的彩票号码统计分析工具...
  9. 大学生 计算机 毕业设计 xx管理系统 毕设(1)
  10. SRP:单一职责原则
  11. .net remoting和wcf自托管——一个bug引发的警示
  12. 安卓模拟器安装教程_无限多开仙境传说RO!第一安卓模拟器BlueStacks蓝叠安卓模拟器多开教程...
  13. 阿里物联网平台产品、设备创建
  14. STM32MP157C-DK2->Develop on Arm® Cortex®-A7之 开启UART7串口功能
  15. mysql 集合 思想_面向集合的思维编写SQL(第九篇 --- “我说的是:苹果柿子李子栗子梨的那个橘子啊”)...
  16. android 世界各国英文简写代码 资源文件
  17. 【报错笔记】Windows下spacy en_core_web_sm安装解决方式
  18. 微信小程序 使用腾讯地图SDK详解及实现步骤
  19. [Python公开课]零基础玩转Python进阶篇----第九节:Python的异常分析及解决
  20. 用户界面设计黄金三原则

热门文章

  1. 澳鹏Appen收购Quadrant:移动定位数据业务进一步增强
  2. 淘客联盟系统维护光盘2008新春大礼包
  3. C语言:strtok()的用法。
  4. [DA45] 信用卡诈骗分析
  5. iOS UINavigationController导航条背景透明
  6. 常见的几种web api 接口加密签名模式
  7. 成都Uber优步司机奖励政策(3月4日)
  8. Spring Boot Actuator自定义健康检查
  9. cad中tk什么意思_cad图纸中各种字母是什么意思
  10. cadence ETS安装过程