Python流行的轻量级web框架-Flask

前言

Web开发大致分为两个方面-客户端(Frontend)和服务器端(Backend)。每当我们在浏览器中输入任何网站的URL时,浏览器就会向服务器发出请求,服务器确认该请求并提供网站内容(HTML,CSS,JS,图像等),然后在浏览器中呈现该内容以进行显示网站。
使用Python,我们可以创建一个服务器,该服务器可以确认对它的请求,并向请求者提供适当的内容。也可以使用其他语言(例如Ruby,JavaScript,Java等)编写。但是,利用现有的Python知识,我们可以轻松地构建完善的网站。

http.server

Python有一个内置模块http.server,它使我们能够轻松创建一个简单的服务器。但是,根据该模块的文档,建议不要在生产中使用它,因为它没有适当的安全检查功能。

Python流行的Web框架

Python提供了许多Web框架,这些框架提供了开发Web应用程序所需的一组全面的功能。一些受欢迎的是:

Django-是最著名的Python Web开发框架,并提供了构建Web应用程序所需的最广泛的功能。可以在其文档中找到更多信息。
Flask-它被列为一个轻量级web框架。它相对来说比较精简和小巧,但具有高度的可扩展性,并提供了构建web应用程序所必需的许多功能。
Pyramid-是Python的另一个轻量级web框架。

Flask

使用Flask创建Web应用程序
Flask是一个简单且易用的框架,所以我选择使用它来构建基于Python的web应用程序项目。Flask文档非常容易理解,并提供了构建我们自己的web应用程序项目所需的所有信息。

安装Flask库

pip install flask

现在我们可以通过构建一个简单的服务器来测试flask。我创建了一个Pythonserver.py以包含服务器代码。

# server.py
# import Flask class from flask  package
from flask import Flask
# create an instance of the Flask class by providing the application module as a parameter
app = Flask(__name__) 

@app.route('/')
def my_first_app():
    return 'This is my first Python Web Application!'

Flask使用装饰器功能来处理应用程序的不同路由。在此,我们已经处理了应用程序的默认本地路由。

Flask提供了一些环境变量。要运行该应用程序,需要为FLASK_APP环境变量分配服务器文件server.py。然后使用flask run

export FLASK_APP=hello.py
flask run
# * Running on http://127.0.0.1:5000/

(在 Windows 下需要使用 set 来代替 export 。)
在打开localhost URL http://127.0.0.1:5000时,我们应该看到应用程序的内容。

为了确保服务器监视代码中所做的更改,需要像这样启用Flask调试模式:

$ export FLASK_ENV=development
$ flask run

现在,在对server.py文件进行任何更改之后,无需重新启动服务器。

使用Flask提供文件

要构建实际的启动网站,我们需要提供HTML,CSS以及一些JS等网站文件。Flask有一些用于提供文件的约定。

所有模板文件(HTML)需要保留在templates文件夹中,而所有静态文件(CSS,JS,assets)都需要放置在static文件夹中。Flask内部使用Jinja模板引擎来渲染模板文件。

我创建了两个模板文件index.htmlabout.html以及一个CSS文件styles.css来管理全局样式。为了提供模板文件,Flask提供了一个功能render_template

# server.py
# import Flask class from flask  package
from flask import Flask, render_template
# create an instance of Flask class by providing the application module as a parameter
app = Flask(__name__) 

@app.route('/')
def home():
    return render_template('index.html')

@app.route('/about')
def about():
    return render_template('about.html')

我们可以将动态变量作为URL传递<variable>,然后使用“变量规则”在模板中动态呈现它们。创建一个post route,该post route可以接受post id作为参数并动态呈现不同的内容。可以选择将converter类型作为传递给变量<converter:variable>。以下是可用的converter类型:

TypeValue
string(默认)接受任何不包含斜杠的文本
int接受正整数
float接受正浮点数
path类似 string ,但可以包含斜杠
uuid接受UUID字符串
# server.py
@app.route('/post/<int:post_id>')
def show_post(post_id):
    # show the post with the given id, the id is an integer
    return 'Post %d' % post_id

现在,在URL /post之后输入任何整数值,页面应该动态显示输入的post id。因为我们添加了一个int converter,传递除整数以外的任何值,将导致找不到页面。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ayiya_Oese

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值