Python 30 天 – 第 24 天 – Web 开发基础(使用 Python 开发网站)
本文是 30 天 Python 挑战系列的一部分。您可以在此处找到本系列之前所有帖子的链接
今天,我探索了如何使用 Python 开发网站。Web 开发大致分为两个方面 – 客户端(前端)和服务器端(后端)。
每当我们在浏览器中输入任何网站的 URL 时,浏览器都会向服务器发出请求,服务器确认请求并提供网站的内容(HTML、CSS、JS、图像等),然后在浏览器中呈现给显示网站。使用 Python,我们可以创建一个服务器,该服务器可以确认对其发出的请求并向请求者提供适当的内容。服务器可以用任何语言编写,例如 Ruby、JavaScript、Java 等。但是,利用我们现有的 Python 知识,我们可以轻松构建成熟的网站。
Python 有一个内置模块 http.server https://docs.python.org/3/library/http.server.html,它使我们能够很容易地创建一个简单的服务器。
Python 中有一些非常受欢迎的 Web 框架,它们提供了开发 Web 应用程序所需的一整套功能。:
- Django – 可能是最著名的 Python Web 开发框架,并提供构建 Web 应用程序所需的最广泛的功能。更多可以在他们的文档中找到 https://docs.djangoproject.com/en/3.0/
- Flask – 它被列为微框架。它相对精简和小巧,但具有高度可扩展性,并提供了许多构建 Web 应用程序所需的功能。
- Pyramid 是另一个用于 Python 的轻量级 Web 框架。
这是一篇有趣的文章,可以了解有关 Python 中 Web 框架的更多信息。
使用 Flask 创建 Web 应用程序
Flask 是一个简单易用的框架,因此我选择使用它来构建我的第一个使用 Python 的 Web 应用程序项目。该文档非常易于理解,并提供了构建我们自己的 Web 应用程序项目所需的所有信息。
我决定构建一个简单的博客应用程序。在今天的帖子中,我们将只进行基本设置并在明天构建其余部分。
我将项目命名为 python-blog。下一步是在项目内部创建一个虚拟环境。Python 3 带有一个内置的 venv 命令来创建一个虚拟环境。
$ python -m venv venv
这会在项目中创建一个包含所有虚拟环境文件的 venv 文件夹。下一步是激活环境。
$ . venv/Scripts/activate
根据所使用的终端,命令会有所不同。https://docs.python.org/3/tutorial/venv.html 本文档详细介绍了虚拟环境和激活它。
激活虚拟环境后,就可以安装flask库了。这现在将仅在项目的虚拟环境中安装包。
现在我们可以通过构建一个简单的服务器来测试flask 。我创建了一个 Python server.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 使用装饰器函数来处理应用程序的不同路由。在这里,我们已经处理了应用程序的默认 home 路由。
Flask 提供了一些环境变量。要运行该应用程序,需要为 FLASK_APP 环境变量分配服务器文件 server.py。然后使用flask run运行应用程序
$ export FLASK_APP=hello.py
$ flask run * 在 http://127.0.0.1:5000/ 上运行
打开’localhost’ URL http://127.0.0.1:5000 后,我们应该会看到应用程序的内容。
为了确保服务器监视代码中所做的更改,需要像这样启用 Flask 调试模式:
$ export FLASK_ENV=development
$ flask run
现在,在对 server.py 文件进行任何更改后,不需要重新启动服务器。
使用 Flask 提供文件
要构建实际的启动网站,我们需要提供网站文件,例如 HTML、CSS 和一些 JS。Flask 有一些服务文件的约定。
所有模板文件 (HTML) 都需要保存在模板文件夹中,所有静态文件(CSS、JS、assets)都需要放在静态文件夹中。Flask 内部使用 Jinja https://jinja.palletsprojects.com/en/2.11.x/ 模板引擎来渲染模板文件。我将提供指向该项目的 Github 存储库的链接以检查文件结构。
我创建了两个模板文件 index.html、about.html 和一个 CSS 文件 style.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 路由,它可以接受 post id 作为参数并动态呈现不同的内容。可以选择将转换器类型作为 <converter:variable> 传递给变量。这些是可用转换器类型的以下类型。
服务器.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 后输入任何数值时,它应该动态显示输入的帖子 ID。由于我们添加了一个 int 转换器,因此传递除数字之外的任何值都将导致找不到页面。
这就是今天的全部内容。明天,我将继续为这个博客应用程序添加更多功能,同时探索更多 Flask 的概念。我使用 Flask 创建了一个 Web 应用程序。通过查阅文档可以随意探索 Django,并尝试使用它构建简单的应用程序。
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!