跟着我们一起学 Python 30天课程-第24天-Web开发基础

作者 : IT 大叔 本文共4630个字,预计阅读时间需要12分钟 发布时间: 2020-08-22

今天,我探讨了如何使用Python开发网站Web开发大致分为两个方面-客户端(Frontend)和服务器端(Backend)。每当我们在浏览器中输入任何网站的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框架。

使用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使用装饰器函数来处理应用程序的不同路由。在此,我们已经处理了应用程序的默认本地路由。

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

$ export FLASK_APP=hello.py
$ flask run
 * Running on 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,资产)都需要放置在静态文件夹中。Flask内部使用Jinja https://jinja.palletsprojects.com/en/2.11.x/模板引擎来渲染模板文件。我将提供指向该项目的Github存储库的链接,以检查文件结构。

我创建了两个模板文件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 id作为参数并动态呈现不同的内容。可以选择将转换器类型作为传递给变量<converter:variable>。以下是可用的转换器类型的以下类型

| string | (default) accepts any text without a slash |
| int | accepts positive integers |
| float | accepts positive floating-point values |
| path | like string but also accepts slashes |
| uuid | accepts UUID strings |

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,它应该动态显示输入的帖子ID。由于我们已经添加了int转换器,因此,除了数字之外传递任何值都将导致找不到页面。

参考文献

我刚刚简短地提到了使用Python进行Web开发的基础。这里有一些很棒的参考文章,可以进一步了解和深入了解。

可以在此仓库中找到该项目的代码https://github.com/arindamdawn/python-blog/tree/master

今天就这些。明天,我将在探索Flask的更多概念的同时,继续向此博客应用程序添加更多功能。我已经使用Flask创建了一个Web应用程序。通过查阅文档来随意探索Django,并尝试使用它构建简单的应用程序。

跟着我们一起学 Python 30天课程目录:

  1.  跟着我们一起学 Python 30天课程-第30天-免费Python资源 
  2.  跟着我们一起学 Python 30天课程-第29天-自动化测试 
  3.  跟着我们一起学 Python 30天课程-第28天-ML和数据科学II 
  4.  跟着我们一起学 Python 30天课程-第27天-ML和数据科学I 
  5.  跟着我们一起学 Python 30天课程-第26天-机器学习基础 
  6.  跟着我们一起学 Python 30天课程-第25天-Web 开发进阶
  7.  跟着我们一起学 Python 30天课程-第24天-Web开发基础 
  8.  跟着我们一起学 Python 30天课程-第23天-网页爬虫 
  9.  跟着我们一起学 Python 30天课程-第22天-脚本额外功能Scripting Extras 
  10.  跟着我们一起学 Python 30天课程-第21天-脚本编写基础 
  11.  跟着我们一起学 Python 30天课程-第20天-调试和测试 
  12.  跟着我们一起学 Python 30天课程-第19天-正则表达式 
  13.  跟着我们一起学 Python 30天课程-第18天-文件I / O 
  14.  跟着我们一起学 Python 30天课程-第17天-外部模块External Modules 
  15.  跟着我们一起学 Python 30天课程-第16天-模块基础Module Basics 
  16.  跟着我们一起学 Python 30天课程-第15天-生成器Generators 
  17.  跟着我们一起学 Python 30天课程-第14天-错误处理Error Handling 
  18.  跟着我们一起学 Python 30天课程-第13天-Decorators 
  19.  跟着我们一起学 Python 30天课程-第12天-Lambda Expressions & Comprehensions 
  20.  跟着我们一起学 Python 30天课程-第11天-函数编程Functional Programming基础 
  21.  跟着我们一起学 Python 30天课程-第10天-OOP Missing Pieces 
  22.  跟着我们一起学 Python 30天课程-第9天-OOP Pillars 
  23.  跟着我们一起学 Python 30天课程-第8天-OOP基础知识 
  24.  跟着我们一起学 Python 30天课程-第7天-开发环境搭建(Developer Environment) 
  25.  跟着我们一起学 Python 30天课程-第6天-循环II和函数(Loops II & Functions) 
  26.  跟着我们一起学 Python 30天课程-第5天-条件和循环I(Conditions & Loops I) 
  27.  跟着我们一起学 Python 30天课程-第4天-数据类型III(Data Types III) 
  28.  跟着我们一起学 Python 30天课程-第3天-数据类型II(Data Types II) 
  29.  跟着我们一起学 Python 30天课程-第2天-数据类型I(Data Types I) 
  30.  跟着我们一起学 Python 30天课程-第1天-简介 
免责声明:
1. 本站资源转自互联网,源码资源分享仅供交流学习,下载后切勿用于商业用途,否则开发者追究责任与本站无关!
2. 本站使用「署名 4.0 国际」创作协议,可自由转载、引用,但需署名原版权作者且注明文章出处
3. 未登录无法下载,登录使用金币下载所有资源。
IT小站 » 跟着我们一起学 Python 30天课程-第24天-Web开发基础

常见问题FAQ

没有金币/金币不足 怎么办?
本站已开通每日签到送金币,每日签到赠送五枚金币,金币可累积。
所有资源普通会员都能下载吗?
本站所有资源普通会员都可以下载,需要消耗金币下载的白金会员资源,通过每日签到,即可获取免费金币,金币可累积使用。

发表评论