Python 30 天 – 第 24 天 – Web 开发基础(使用 Python 开发网站)

作者 : 慕源网 本文共2881个字,预计阅读时间需要8分钟 发布时间: 2021-10-15 共94人阅读

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库了。这现在将仅在项目的虚拟环境中安装包。

$ pip install 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> 传递给变量。这些是可用转换器类型的以下类型。

| string | (默认)接受任何不带斜杠的文本 |
| int | 接受正整数 |
| float | 接受正浮点值 |
| path  | 像字符串但也接受斜杠 |
| uuid  | 接受 UUID 字符串 |

服务器.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,并尝试使用它构建简单的应用程序。


慕源网 » Python 30 天 – 第 24 天 – Web 开发基础(使用 Python 开发网站)

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。

发表评论

开通VIP 享更多特权,建议使用QQ登录